我有一個Python 3程序,它具有最終從單個基類「RootClass」派生的類層次結構。我希望能夠從任何類的對象中設置值,並從這些類的任何其他對象中查看該值。我目前使用的解決方案使用全局變量,該變量可以通過'RootClass'中定義的對象方法訪問。來自所有派生類的Python訪問基類數據
file1.py:
_myVal= None # the global variable
class RootClass:
def setVal(self, y):
global _myVal
_myVal= y
def getVal(self):
return _myVal
file2.py:
from file1 import RootClass
class A (RootClass):
pass
class B (A):
pass
class C (B):
pass
class D (RootClass):
pass
if __name__ == "__main__":
objA = A()
objB = B()
objC = C()
objD = D()
objD.setVal(100)
print(objA.getVal())
print(objB.getVal())
print(objC.getVal())
print(objD.getVal())
執行:
CMD> python file2.py
100
100
100
100
我認識的全局變量在一般皺着眉頭,但沒有別的,我認爲看起來很乾淨簡單。
我考慮的另一個選擇是製作一個具有set/get方法的'ValClass'對象。然後,RootClass中的set/get方法將調用該對象的set/get方法。但這意味着我必須仍然創建ValClass對象,並確保它可以從其他所有對象訪問,所以我基本上回到了擁有全局的對象。
什麼是解決這個問題的更好/更多Pythonic方法?
嘛,就是這樣簡單作爲我的解決方案並避免了全局性。我很尷尬,我沒有想到這一點。謝謝! – Craig