我试图了解类变量和 init 之间的区别。我理解类变量通常是静态的并且可以改变。
我想知道为什么当你通过Sam的实例更改变量帐户后打印变量帐户时,它已经为David更改了。
但是,无论何时更新Sam的余额,David都不会更改。谢谢。
class BankAccount:
Balance = 0
Accounts = []
Sam = BankAccount()
David = BankAccount()
print("Sam's Balance", Sam.Balance)
print("David's Balance", David.Balance)
print("")
print("Sam's Accounts", Sam.Accounts)
print("David's Accounts", David.Accounts)
Sam.Balance = 1000
Sam.Accounts.append("Sam's Personal Checking")
print("Sam's Balance", Sam.Balance)
print("David's Balance", David.Balance)
print("")
print("Sam's Accounts", Sam.Accounts)
print("David's Accounts", David.Accounts)
答案 0 :(得分:1)
每当你为一个实例分配一个属性时,它就会变成一个实例变量(不被任何其他实例共享),即使它之前是一个类变量。这就是Sam.Balance = 1000
的情况。但是,Sam.Accounts.append("Sam's Personal Checking")
是完全不同的情况 - 您没有分配任何内容,“帐户”列表与之前完全相同,仍然是类变量。您只需更改该列表的内容,无论您如何检索列表,都可以看到该内容。
答案 1 :(得分:0)
Python中的整数是不可变的,所以当Sam.Balance = 1000
时,这会将实例变量Balance
添加到实例Sam
,而不是更改类变量。
答案 2 :(得分:0)
为了说明给出的答案:您可以使用id()或is运算符检查对象是否相同。
function copyValue() {
document.getElementById("tes1").value = this.textContent === "Yes" ? '1' : '0';
}
Naming and Binding读得很好。 Classes section of the Tutorial可以提供见解。