我要遵循良好的編程習慣,所以我有點停留在這個問題:訪問來自繼承類的私有方法在python
可以說我有類根,
Class root(Object):
def __init__(self):
self._root_tree = 'Base'
def __str__(self):
return self._root_tree
def _test(self):
return 'test'
可以說,我創建一個名爲橡樹
Class Oak(root):
def __str__(self):
return 'Oak'
def _test(self):
return 'Oak_test'
def _new_fun(self):
return 'new_func_only_in_oak'
然後在此類櫻桃類,我可以做以下
Class Cherry(root):
def _grab_trees(self,another_tree): #another_tree is a Oak object
other_tree = another_tree.__str__() #this will return Oak
return 'The other three is: ' + other_tree
def _test2(self,another_tree):
return another_tree._test()
def _testing_new(self,another_tree):
return another_tree._new_fun()
基本上在Cherry類中調用__str__()
_new_fun()
和_test()
有效(良好做法)。
那麼...又是什麼問題? – 2012-08-02 02:17:01
'Cherry'類方法不訪問它們自己實例的超類的私有方法,它們正在訪問那些通過額外參數(即非自身屬性)傳遞給它們的實例的方法。這打破封裝。 – martineau 2012-08-02 03:13:06