龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > python编程 >

Python中用Descriptor实现类级属性(Property)详解(2)

时间:2014-09-19 02:33来源:网络整理 作者:网络 点击:
分享到:
于是自定义了一个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() 。这个问题,问的非常好,原因就一个字:懒。懒得以后每次都得敲那么多代码。

精彩图集

赞助商链接