1
我想獲得一個屬性來打印它在python中的所有者類中分配的名稱,並且我已經制定了一種似乎可行的方法當且僅當該財產是直接分配的。如果該屬性是繼承的,則不起作用,如下所示。什麼是一種好方法,當您撥打Handler.CLIENT_ID
或SubHandler.CLIENT_ID
時,變量名稱CLIENT_ID
始終打印?如何從Python類中找到一個屬性的名稱
class Auto(object):
def __get__(self, instance, owner):
attr_name = (k for (k, v) in owner.__dict__.iteritems() if v == self).next()
return attr_name
class Handler(object):
name = 'account'
CLIENT_ID = Auto()
class SubHandler(Handler):
pass
h = Handler()
print h.CLIENT_ID
# prints CLIENT_ID
s = SubHandler()
print s.CLIENT_ID
# Traceback (most recent call last):
# attr_name = (k for (k, v) in owner.__dict__.iteritems() if v == self).next()
# StopIteration