为什么这个例子中 self 和 Class name 的用法不同?

问题描述 投票:0回答:1

在这段代码中,当我在第四行写类名时,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)
python-3.x oop
1个回答
0
投票

我假设你问的是

self.initial_account_id += 12
。这不会更新类属性;它创建了一个新的 instance 属性,它隐藏了类属性,相当于
self.initial_account_id = self.initial_account_id + 12
。对于每个新实例,右侧出现的
self.initial_account_id
尚不存在,因此会转化为
BankAccount.initial_account_id

© www.soinside.com 2019 - 2024. All rights reserved.