我不相信這是可能的,但我想我會問,因爲我是新來的Python。給定一個具有屬性的對象,其值由描述符處理;是否有可能知道給定的描述符類型是否涉及?是否有可能測試對象屬性是否使用描述符?
實施例描述符:
class Column(object):
def __init__(self, label):
self.label = label
def __get__(self, obj, owner):
return obj.__dict__.get(self.label)
def __set__(self, obj, value):
obj.__dict__[self.label] = value
測試對象:
class Test(object):
name = Column("column_name")
def add(self):
print self.name.__class__
執行此:
my_test = Test()
my_test.name = "myname"
my_test.add()
這GIV es:<type 'str'>
這是值「myname」的數據類型,是否可以測試isinstance(self.name,Descriptor) - 這將返回false,但我希望它返回true - 或類似的東西?
編輯 - 上Test
是'my_test.name'應該正常被分配給一個列對象? – ForgetfulFellow
不,my_test.name是Test()對象的屬性。描述符用於確保名稱有效。我使用描述符而不是@property來減少代碼,因爲它將在很多地方使用。理想情況下,我想知道my_test.name使用列描述符。然而,我不確定這是否可能.. – Matt
@Matt你是否試圖確定描述符重寫的方法或對象的類是否是描述符? – 2014-02-23 01:26:10