正在更改__init__内部的类变量



我试图通过每次执行类的实例时添加一个来更新下面代码中的人数,这以前对我有效,但我今天尝试了代码,但它不起作用。当我尝试打印";用户.人";变量,它返回我认为是它在内存中的地址。请帮帮我。

class User:
people = int(0)
def __init__(self, first_name, last_name, age):
self.name = first_name + " " + last_name
self.age = age
User.people += 1
def __str__(self):
return f"{self.name} is {self.age} years old"
def __del__(self):
User.people -= 1
def people(self):
print(f"There are now {self.people} in the class and his name is {self.name}")
return self.people
person1 = User("Greg", "Mitchel", 76)
person2 = User("Michael", "Hutton", 16)
print(User.people)
print(person1)

输出:

Traceback (most recent call last):
File "C:/Users/User/Downloads/test.py", line 20, in <module>
person1 = User("Greg", "Mitchel", 76)
File "C:/Users/User/Downloads/test.py", line 8, in __init__
User.people += 1
TypeError: unsupported operand type(s) for +=: 'function' and 'int'

您的错误是为两个不同的类属性提供了相同的名称:第一,简单变量;后来您将people重新定义为实例方法。当您尝试更改总体计数时,people已被重新定义为一种方法,因此增量是非法的。只需更改一个名称:

def report_pop(self):
print(f"There are now {self.people} in the class and his name is {self.name}")
return self.people

最新更新