代码中遇到类似于下面的情况,A是一个基类,在类A中的函数b中,调用了未定义的函数self.funcK()
。在A的继承类B中新建了这个函数。
在新建类A的实例的时候,代码不会报错。原因是,新建实例的时候,调用的是__init__()
,不会检测函数b()
中是否存在语法错误。
不建议这种做法。就算self.K()
在基类中没有作用, 也需要取定义一下,然后在继承类中重新定义,否则给代码阅读带来一定的障碍
class A:
def __init__(self):
self.p = 1
def funcA(self,param):
c = self.funcK(param) ## 未在基类中定义
return c
class B(A):
def __init__(self):
super().__init__()
def funcK(self,param): ## 在子类中定义
return param
a = A()
b = B()
res = b.funcA(3) ###
print(res) ## 输出:3