Adm*_*VII 1 python inheritance
我有一个班级又一个班级。我想跳过初始化过程的一部分,例如:
class Parent:
__init__(self, a, b, c, ...):
# part I want to keep:
self.a = a
self.b = b
self.c = c
...
# part I want to skip, which is memory and time consuming
# but unnecessary for the subclass:
self.Q = AnotherClass()
class Child(Parent):
__init__(self):
#a part of the parent initialization process, then other stuff
Run Code Online (Sandbox Code Playgroud)
我提出的两个解决方案是:
Parent类,该类不包含Child,或初始化的不需要部分哪个最好,或者有更好的方法?
如何将创建的包装包装Q到私有方法中,并在子类中覆盖该方法呢?
class Parent:
def __init__(self, a, b, c, ...):
# part I want to keep:
self.a = a
self.b = b
self.c = c
self._init_q()
def _init_q():
self.Q = AnotherClass()
class Child(Parent):
def _init_q(self):
pass # do not init q when creating subclass
Run Code Online (Sandbox Code Playgroud)
这不是最干净的方法,因为如果Child不需要Q它,则不应该将其作为Parent的子级,或者AnotherClass放错了位置(也许应该将其注入需要它的方法中),但是它可以解决您的问题而无需更改任何类接口。