我幾乎想要做的是從另一個類中的函式永久更改一個類的變數,這可能嗎?還是我必須創建一個新函式來專門處理它?
解釋一下(在一個非常簡單的例子中,我的代碼當前是如何設定的):
class A():
def __init__(self, number):
self.number = number # for this example the number is 5 to begin with
self.dictionary = {(1, 0): 'a', (2,0): 'b'}
# ...some other code for the class
class B(): # note that B DOES NOT inherit from A
def __init__(self, number):
self._number = number
self._A = A(self._number)
def do_stuff(self) -> None: # it is a requirement to not return anything
number = self._A.number
dictionary = self._A.dictionary
# Printing them now would just give 5 and {(1, 0): 'a', (2,0): 'b'}
# what I want to do is something like this:
self._A.number = self._A.number 5
# so that ANY time I use self.number from A() it will be 10
這真的可以做嗎?我讀了一些關于公共變數和私有變數的內容(因此為什么在 A 中它們沒有下劃線,而在 B 中有下劃線),它說它們可以在課堂外更改和使用,但似乎不起作用。
它只適用于那個函式,那個時間,那個做出改變的函式,而不是在后續函式中,即使我再次呼叫同一個函式。
就像如果我稍后再打電話給他們,從B檢查印刷另一功能列印出來5,并{(1, 0): 'a', (2,0): 'b'}和不10和{(6, 0): 'a', (7,0): 'b'} ,我想它。
對于想要了解我正在做什么的更多資訊的人,我正在嘗試在網格上設定一個二維游戲,其中一個類(相當于 A())僅處理物體在網格中的定位grid 作為字典將元組映射到字符表示。另一個類(相當于 B())處理游戲的實際運行。我正在嘗試執行此操作的特定功能應該將網格中物體的位置向左或向右更改一個位置,如果超出邊界,還將其移動到螢屏的另一側,以便當我稍后更改游戲的顯示以匹配位置時,一切都會向左或向右移動一個位置。
uj5u.com熱心網友回復:
是的,你應該如何擁有它。我用上面的代碼進行測驗:
b = B(5)
assert b._A.number == 5
b.do_stuff()
assert b._A.number == 10
它似乎按預期作業。為了稍微簡化,我還建議更改此設定:
self._A.number = self._A.number 5
對此:
self._A.number = 5
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/328539.html
