【发布时间】:2016-12-01 19:51:35
【问题描述】:
我需要父项中的设置来包含子项的功能。 (此父级的每个子级都将使用该设置,但定义函数的方式会改变)
这可能吗?目前它似乎从父类中读取未定义的函数(因此中断)
class Mine(object):
__metaclass__ = ABCMeta
@abstractmethod
def _get_stuff(self):
raise NotImplementedError()
@abstractmethod
def _set_stuff(self, value):
raise NotImplementedError()
settings = property(_get_stuff, _set_stuff)
def do_stuff_with_settings(self):
return settings
class Child(Mine):
def _get_stuff(self):
return {"a": 2}
def _set_stuff(self):
pass
def do_stuff(self):
self.a = do_stuff_with_settings.a
【问题讨论】:
-
你想通过这种方式解决什么问题?
-
有许多通用功能(每个孩子都一样)使用该设置。我不希望这些函数引用父级中不存在的变量(尽管 python 不会抱怨)。
-
可以
do_stuff_with_settingsreturn property(self._get_stuff, self._set_stuff) -
do_stuff_with_settings有很多函数可以访问设置中包含的参数,而 _get_stuff 正在从另一个字典中检索值字典