Вы не можете получить унаследованное свойство в аргументе функции, потому что self
там не определено.Вы можете получить свойство класса от родительского элемента, которое @ MarkTolonen показывает .Это может быть то, что вы хотите, но это не одно и то же.
Подумайте:
class BaseFoo:
_inherited = 'someval'
class Foo(BaseFoo):
def someAction(self):
self._inherited = "other"
def dosomething(self,bar=BaseFoo._inherited ):
print( bar, self._inherited ) # should print someval if we call dosomething()
f = Foo()
f.someAction() # changes f._inherited to "other"
f.dosomething() # what should be printed? self._inherited or bar?
# prints someval other
Если ответ все еще someval
, то это делает то, что вам нужно, но если вынадеясь, что ответ other
, тогда это не сработает.Вам нужно будет фактически установить значение в теле функции, используя шаблон, который устанавливает значение по умолчанию None
и проверяет:
class BaseFoo:
_inherited = 'someval'
class Foo(BaseFoo):
def someAction(self):
self._inherited = "other"
def dosomething(self,bar=None):
if bar is None:
bar = self._inherited
print( bar, self._inherited )
f = Foo()
f.someAction()
f.dosomething()
# prints other other