我第一次尝试在列表中使用类对象。但由于某种原因,列表中所有类对象的属性都被分配了与列表中最后一个对象相同的值。这是我的代码:
# First I define the class
class Batsman:
def __init__(self, innings, avg, sr):
Batsman.innings = innings
Batsman.avg = avg
Batsman.sr = sr
# Then I create the list of class objects:
batsman = [
Batsman(100,45,65),
Batsman(50,40,60)
]
# Then I print the below:
print(batsman[0].innings)
输出应该是100,但实际上是50。为什么会这样?如果我使用5个实例,那么所有5个实例的属性都会重置为最后一个对象所包含的属性。为什么会这样?
当使用类的名称Batsman
时,您引用的是类而不是实例,您需要使用self
:
class Batsman:
def __init__(self, innings, avg, sr):
self.innings = innings
self.avg = avg
self.sr = sr
# Then I create the list of class objects:
batsman = [
Batsman(100,45,65),
Batsman(50,40,60)
]
# Then I print the below:
print(batsman[0].innings)
你可以在这个问题中查看一些关于self
的额外解释和信息