2013-04-05 36 views
4

是否有一种简单的方法来查找类类型中的所有描述符?如果我有这样的代码:有没有一种简单的方法来获取python类中定义的所有desciptors?

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从类的外部存在吗?

回答

2

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

descriptors = [m for m,v in ContrivedExample.__dict__.iteritems() 
       if isinstance(v, Descriptor)] 

# descriptors is set to ['Name', 'Date'] 
+0

啊,我试过一个_instance_同样的事情,什么都没有 - 我忘了的有自己的字典 – theodox 2013-04-05 16:03:20

+0

呀,你不得不如果你想使用'SomeInstance .__类__.__ dict__'获得在类定义上定义的东西。 – Amber 2013-04-06 00:49:00

相关问题