【发布时间】:2014-01-14 15:38:25
【问题描述】:
我正在尝试构建一个框架来解析非常具体的文本结构。 我正在处理的结构很丰富,并且有一个已知的模式,类似于 xml。 我正在尝试构建一个框架来进行解析。文本有不同的部分,我预计将来会添加更多的部分代码。为了补偿,我正在尝试构建一系列可以根据需要换入或换出的派生类。
我以为一切都按计划进行,直到我开始编写第一个派生类。
基类在__init__ 内部有一些功能,我希望我能在所有具体派生类中免费获得这些功能。然而,情况似乎根本不是这样。
这是一个简单的例子来说明我的问题: 我希望输出是:
['memberA', 'memberB', 'memberC'], ['DerivedA', 'DerivedB', 'DerivedC']
class base(object):
def __init__(self):
members = [attr for attr in dir(self) if not callable(attr) and not attr.startswith("__")]
print members
class test(base):
def __init__(self):
self.memberA = None
self.memberB = None
self.memberC = None
class test2(test):
def __init__(self):
self.DerivedA = None
self.DerivedB = None
self.DerivedC = None
t = test()
t2 = test2()
有人可以向我解释一下,为什么打印功能没有按我的预期工作吗?
编辑: 根据下面的答案:我现在有这个问题:
如果 base.__init(self) 看起来像这样会怎样:
class base(object):
def __init__(self, text):
我是否必须将派生类定义为:
class test(base):
def __init__(self, text):
base.__init__(self, text)
我希望至少可以免费获得参数对象引用
【问题讨论】:
标签: python oop inheritance python-2.7