菜鸟问题:列表中的Python类属性无法正确识别

时间:2018-11-07 10:13:32

标签: python list class object

我正在尝试第一次使用列表中的类对象。但是由于某种原因,列表中所有类对象的属性都被赋予与列表中最后一个对象相同的值。这是我的代码:

# 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个实例的属性都将重置为最后一个对象包含的内容。为什么会这样?

1 个答案:

答案 0 :(得分:2)

在使用类名Batsman时,您引用的是类而不是 instance ;您需要使用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)

您可以在此other question

中查看有关self的一些附加说明和信息。