name
属性。原因是,如果设置了属性,类将获得默认名称,但如果需要,单个类仍然可以具有自定义名称。
class NameMixin(object):
def _get_name(self):
if getattr(self, '_name', ''):
return self._name
else:
return self.__class__.__name__
def _set_name(self, name):
self._name = name
name = property(_get_name, _set_name)
class A(NameMixin):
name = 'Class A'
class B(NameMixin):
pass
给,同学们
A
自定义名称,而类
B
没有。
>>> a = A()
>>> a.name
'Class A'
>>> A.name
'Class A'
>>> b = B()
>>> b.name
'B'
>>> B.name
<property object at 0x7fd50a38c578>
这不是我想要的!从特定实例获取名称的工作正常,但是尝试从类获取名称会返回
property object
是否可以直接从类中获取名称,而不必使用property对象跳过环(无论如何,我在需要class属性的地方都无法检查这个属性)