Python中用Descriptor实现类级属性(Property)详解(2)
于是自定义了一个classproperty: 复制代码 代码如下: class classproperty(object): def __init__(self, func): self.func = func def __get__(self, instance, klass): return self.func(klass) 这需
于是自定义了一个classproperty:
复制代码 代码如下:
class classproperty(object):
def __init__(self, func):
self.func = func
def __get__(self, instance, klass):
return self.func(klass)
这需要这样,我在DBManage中的代码就可以改为:
复制代码 代码如下:
class DBManage(object):
@classproperty
def table_name(cls):
return cls.__name__.lower()
@classmethod
def select_all(cls):
sql = "SELECT * FROM %s""" % cls.table_name # 多么直观
这就是Descriptor另外的一个使用案例了。
可能有人或有一个小疑问:为毛你不是在sql赋值时直接 sql = "SELECT * FROM %s" % cls.__name__.lower() 。这个问题,问的非常好,原因就一个字:懒。懒得以后每次都得敲那么多代码。
- 上一篇:python中对list去重的多种方法
- 下一篇:Python中的闭包总结
精彩图集
精彩文章