3 回答

TA貢獻1842條經驗 獲得超13個贊
該變量some_number位于類之外,因此不會改變。最簡單的方法是避免類并修改變量some_number。另一種選擇是some_number完全放棄并執行以下操作:
class Numbers:
def __init__(self, number):
self.number = number
def edit(self):
self.number = self.number - 50
def printNumber(self):
print(self.number)
那會被稱為這樣:
number = Numbers(150)
number.edit()
number.printNumber()
編輯該變量的方法有很多,但這是兩種可能的方法。
需要注意的是,全局變量可能會很棘手,但在全局范圍內聲明它也可以。

TA貢獻1860條經驗 獲得超8個贊
您將該變量聲明some_number為全局變量。將屬性添加.number到Numbers類的全部目的是使其特定于類的每個實例。
你可以改變some_number作為副作用,但你為什么要這樣做呢?
如果你有充分的理由,你會這樣做:
some_number = 200
class Numbers:
def __init__(self):
self.number = some_number
def edit(self):
global some_number
self.number = self.number - 50
some_number = self.number
def printNumber(self):
print(self.number)
n = Numbers()
n.edit()
n.printNumber()
print(some_number)
但更有可能的是,你想要這樣的東西:
some_number = 200
class Number:
def __init__(self, number):
self.number = number
def edit(self, change):
self.number = self.number + change
def __str__(self):
return str(self.number)
n = Number(some_number)
n.edit(-50)
print(n)
print(some_number)
將內容保留在全局變量中通常是一個非常糟糕的主意,除非有充分的理由讓一個值可供所有程序使用,并且該值的更改會影響整個程序。即使在這些情況下,通常最好顯式傳遞該值,而不是僅僅引用它,并賭它具有正確的值。
對于類,如果確實有充分的理由,則應該考慮使用類屬性而不是全局變量,這將使該類的所有實例的一個值保持相同,但至少沒有全局變量影響。

TA貢獻1790條經驗 獲得超9個贊
您可以通過以下方式訪問和更改some_number范圍global
class Numbers:
def edit(self):
global some_number
some_number = some_number - 50
def printNumber(self):
print(some_number)
不過,一般來說,需要修改全局變量通常都指向設計問題......
添加回答
舉報