考虑以下两类:
class A(object):
name = "A"
class B(A):
name = "Child of " + A.name
很简单。A.name
将是“A”,而B.name
将是“A的子级”。你知道吗
但是将A.name
硬编码到B
的name
定义中似乎是错误的。我很自然地想写一些东西,比如:
class B(A):
name = "Child of " + super(B).name
但是这就产生了一个NameError
,其中B
尚未在表达式super(B)
中定义。(另外,我不确定它是否应该是super(B)
或者super(B, B)
或者其他什么,但是考虑到NameError
,这是一个没有意义的观点。)
正确的方法是什么,即在类属性的定义中使用super
?你知道吗
它不能在类定义内完成,原因是您发现:在类定义内,您无权访问类本身,因为它尚未定义。你知道吗
不过,您可以使用类装饰器(如果您使用的是带有类装饰器的Python版本,我认为是2.6及更高版本):
你不能。如果必须这样做,则需要在B的主体中显式使用A
相关问题 更多 >
编程相关推荐