在Python中的子类成员中使用super
考虑以下代码:在Python中的子类成员中使用super,python,class,subclass,super,Python,Class,Subclass,Super,考虑以下代码: >>> class A: ... k = 1 ... >>> class B(A): ... k = super(B, cls).k ... Traceback (most recent call last): File "<console>", line 1, in <module> File "<console>", line 2, in B1 NameError: name 'B'
>>> class A:
... k = 1
...
>>> class B(A):
... k = super(B, cls).k
...
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "<console>", line 2, in B1
NameError: name 'B' is not defined
>>A类:
... k=1
...
>>>B(A)类:
... k=超级(B,cls).k
...
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
B1中第2行的文件“”
名称错误:未定义名称“B”
为什么这会导致错误,最好的解决方法是什么?
谢谢。super()
只能在方法中使用,不能在类定义中使用。它需要访问类MRO,当构建B
类主体时,还不知道该类MRO
更好的是,在定义类时,B
尚未绑定!直到类主体被执行之后才会发生;在创建类对象之前,首先需要类主体
只是不要覆盖k
:
class A:
k = 1
class B(A):
pass
而B.k
继承自A
或直接引用;毕竟,在定义类时,您确切地知道自己拥有哪些基类:
class A:
k = 1
class B(A):
k = A.k
super()
只能在方法中使用,不能在类定义中使用。它需要访问类MRO,当构建B
类主体时,还不知道该类MRO
更好的是,在定义类时,B
尚未绑定!直到类主体被执行之后才会发生;在创建类对象之前,首先需要类主体
只是不要覆盖k
:
class A:
k = 1
class B(A):
pass
而B.k
继承自A
或直接引用;毕竟,在定义类时,您确切地知道自己拥有哪些基类:
class A:
k = 1
class B(A):
k = A.k
super()
只能在方法中使用,不能在类定义中使用。它需要访问类MRO,当构建B
类主体时,还不知道该类MRO
更好的是,在定义类时,B
尚未绑定!直到类主体被执行之后才会发生;在创建类对象之前,首先需要类主体
只是不要覆盖k
:
class A:
k = 1
class B(A):
pass
而B.k
继承自A
或直接引用;毕竟,在定义类时,您确切地知道自己拥有哪些基类:
class A:
k = 1
class B(A):
k = A.k
super()
只能在方法中使用,不能在类定义中使用。它需要访问类MRO,当构建B
类主体时,还不知道该类MRO
更好的是,在定义类时,B
尚未绑定!直到类主体被执行之后才会发生;在创建类对象之前,首先需要类主体
只是不要覆盖k
:
class A:
k = 1
class B(A):
pass
而B.k
继承自A
或直接引用;毕竟,在定义类时,您确切地知道自己拥有哪些基类:
class A:
k = 1
class B(A):
k = A.k
为什么要在类定义体中首先使用
super()
?为什么要在类定义体中首先使用super()
?为什么要在类定义体中首先使用super()
?为什么要使用super())
首先在类定义体中?