在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())
首先在类定义体中?