【问题标题】:Is there a succint way to get all the desciptors defined in a python class?有没有一种简洁的方法来获取 python 类中定义的所有描述?
【发布时间】:2013-03-27 10:05:06
【问题描述】:

是否有一种简单的方法可以查找类类型中的所有描述符?如果我有这个代码:

class Descriptor(object):

    def __init__(self):
        self._name = ''

    def __get__(self, instance, owner):
        print "Getting: %s" % self._name
        return self._name

    def __set__(self, instance, name):
        print "Setting: %s" % name
        self._name = name.title()

    def __delete__(self, instance):
        print "Deleting: %s" %self._name
        del self._name

class ContrivedExample(object):
   Name = Descriptor()
   Date = Descriptor()

如何从课堂外发现 ContrivedExample.Name 和 ContrivedExample.Date 存在?

【问题讨论】:

    标签: python properties descriptor


    【解决方案1】:

    您可以遍历类的__dict__ 属性,该属性存储类中所有已定义的名称,并检查每个名称的值的类型。

    descriptors = [m for m,v in ContrivedExample.__dict__.iteritems()
                   if isinstance(v, Descriptor)]
    
    # descriptors is set to ['Name', 'Date']
    

    【讨论】:

    • 啊,我在 instance 上尝试了同样的事情,但什么也没得到 - 我忘记了 有自己的字典
    • 是的,如果你想获得在类定义中定义的东西,你必须使用SomeInstance.__class__.__dict__
    猜你喜欢
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2019-08-18
    相关资源
    最近更新 更多