所以我有這個類:
class UniversalHash(HashClass):
##################################################
def __init__(self):
super().__init__()
self.__MParamK = int(0)
self.__MParamC = int(0)
self.__MParamD = int(0)
# Override #
def FindHash(self, Key):
return (((self.__MParamK * Key) self.__MParamC) % self.__MParamD) % self.__MParamL
def SetParamK(self, Value):
self.__MParamK = Value
def SetParamC(self, Value):
self.__MParamC = Value
def SetParamD(self, Value):
self.__MParamD = Value
和父類:
class HashClass:
##################################################
def __init__(self):
self.__MParamL = int(0)
def SetParamL(self, Value):
self.__MParamL = Value
def GetParamL(self):
return self.__MParamL
def FindHash(self, Key):
pass
當我嘗試訪問變數 __MParamL (在父級中創建的變數)時,它給了我一個例外,告訴我該變數不是這個類的屬性,我在網上搜索過,似乎這是正確的方法撰寫代碼(也許被覆寫的函式是問題?)。任何幫助表示贊賞
uj5u.com熱心網友回復:
當您使用前導雙下劃線命名實體屬性時,它將獲得名稱 mangled,例如,
>>> class A:
... def __init__(self):
... self.x = 42
... self.__y = 42
...
>>> a = A()
>>> vars(a)
{'x': 42, '_A__y': 42}
相反,您應該只使用一個下劃線,例如,
>>> class A:
... def __init__(self):
... self.x = 42
... self._y = 42
...
>>> a = A()
>>> vars(a)
{'x': 42, '_y': 42}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/522924.html
上一篇:LinqtoEntityFramework:無法創建“”型別的常量值。此背景關系僅支持原始型別或列舉型別
下一篇:外鍵測驗用例
