在这段代码中,当我在第四行写类名时,account_id每次都不同,但是当我使用self代替时,account_id将与对象的数量相同,在参考文献我中据了解,在这种情况下使用类名和关键字 self 没有区别,但我在这个例子中看到它不同,原因是什么?我学的有错吗?
class BankAccount():
initial_acount_id = 1000110011
def __init__(self, fname, lname, deposit = 0) -> None:
BankAccount.initial_acount_id += 12
self.account_id = self.initial_acount_id
self.fname = fname
self.lname = lname
self.deposit = deposit
fir = BankAccount("ali", 'zarei')
sec = BankAccount('mehrdad', 'rsccz', 50)
thi = BankAccount('sdad', 'ccjkj')
print(fir.account_id)
print(sec.account_id)
print(thi.account_id)
我假设你问的是
self.initial_account_id += 12
。这不会更新类属性;它创建了一个新的 instance 属性,它隐藏了类属性,相当于 self.initial_account_id = self.initial_account_id + 12
。对于每个新实例,右侧出现的 self.initial_account_id
尚不存在,因此会转化为 BankAccount.initial_account_id
。