2013-04-05 64 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

相關問題