1

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

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

4

1 回答 1

2

当使用类的名称时,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您可以在其他问题中查看一些额外的解释和信息

于 2018-11-07T10:15:46.747 回答