我有一系列派生类" ChildA"," ChildB"等等...都继承自Base类" Parent"。
Parent的目的是实现在Child类中执行代码的通用方法。在此方法内部是基于子实例的状态'的条件。
class Parent:
def process(self):
try:
self.run()
except:
assert self.status == 'ok'
class ChildA(Parent):
def run(self):
...
我希望保存未来的开发人员Child类免于令人不快的意外。
我觉得解决方案会以AbstractClass的形式出现,但我还没有(完全)掌握这个概念。或者说,我得到的概念,但不是如何应用它。
否则我可以:
__init__(self): self.status = None
添加到Parent,并要求(再次通过文档),使用所有Child类
super()调用Parent的init函数。
你推荐什么?
运行Python 3.5
答案 0 :(得分:0)
我认为明确而且召唤超级可能是最好的方式。 但您也可以考虑在Parent类中使用属性:
class Parent(object):
def process(self):
try:
self.run()
except Exception, e:
assert self.status == 'ok'
def get_status(self):
try:
return self._status
except AttributeError:
print "oops: child class did not initialize status"
return "ok"
def set_status(self, status):
self._status = status
status = property(get_status, set_status)
class BadChild(Parent):
def run(self):
print "run bad"
self.status
class GoodChild(Parent):
def __init__(self):
self.status = "ok"
def run(self):
print "run good"
self.status
测试:
bad = BadChild()
good = GoodChild()
good.process()
bad.process()