4

クラス型のすべての記述子を見つける簡単な方法はありますか? このコードがある場合:

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 が存在することを確認するにはどうすればよいですか?

4

1 に答える 1

2

クラス内に定義されたすべての名前を格納するクラスのプロパティを反復処理し、__dict__各名前の値の型を確認できます。

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

# descriptors is set to ['Name', 'Date']
于 2013-04-05T05:11:33.963 に答える