是否有一種方法可以在類中保留私有類變量,並仍將其用作非默認變量的默認值(而不是在之前定義該值,類)?在python中使用類變量作爲非默認參數
例如:
class a:
def __init__(self):
self.__variable = 6
def b(self, value = self.__variable):
print value
是否有一種方法可以在類中保留私有類變量,並仍將其用作非默認變量的默認值(而不是在之前定義該值,類)?在python中使用類變量作爲非默認參數
例如:
class a:
def __init__(self):
self.__variable = 6
def b(self, value = self.__variable):
print value
你將得太多問題:
class a:
def __init__(self):
self.__variable = 6
def b(self, value=None):
if value is None:
value = self.__variable
print value
哇。我失敗了。謝謝! – calccrypto 2011-01-09 06:57:22
self.__variable
是一個實例變量,而不是一類變量。None
和添加if arg is None: arg = real_default
的函數體,不工作)。,如果你想None
是在允許的參數範圍內值得加入到這個,你可以創建一個不習慣於代碼中的任何其他目的的自定義前哨值。如果不這樣做,value
,None
永遠不能從b
返回。
UseDefault = object()
# Python 3? Otherwise, you should inherit from object unless you explicitly
# know otherwise.
class a:
def __init__(self):
self._variable = 6
def b(self, value=UseDefault):
if value is UseDefault:
value = self._variable
print value
現在None
可以傳遞給b
不會導致默認被used.`
Python做**不**有私有類變量。完全一樣。你正在使用的雙下劃線確實不會讓變量變爲私人的,它只是爲了避免名稱衝突而改名。 除非你知道爲什麼你必須使用雙下劃線,否則不要使用雙下劃線。 ;) – 2011-01-09 08:03:41
偉大的問題! (那麼,它解決了我的一個巨大問題,所以...) – nchpmn 2011-06-08 10:59:07