python子类继承父类,使用self报错,求大神指点

>>>classfather:defmethod(self):print('infather.method')>>>classson(father):defmethod(... >>> class father:
def method(self):
print('in father.method')

>>> class son(father):
def method(self):
print ('starting son.method')
father.method(self)
print('ending son.method')

Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
class son(father):
File "<pyshell#25>", line 4, in son
father.method(self)
NameError: name 'self' is not defined
展开
 我来答
gswyhq
2017-05-30 · TA获得超过106个赞
知道答主
回答量:52
采纳率:100%
帮助的人:33.1万
展开全部
我的是python3;
这里有两个问题:
1、你继承的时候,为何跟父类的函数名都是“method”,除非的你想改写父类的这个函数“method”,若不是,就不要用同样的函数名;我这里把函数名改成了“method2”;
2、调用父类的方法时,不要这样“father.method(self)”,而应该是这样“self.method()”;
In[77]: class son(father):
def method2(self):
print ('starting son.method')
self.method()
print('ending son.method')
In[78]: s_ = son() # 实例化类'son'
In[79]: s_.method2() # 调用子类的方法“method2”
starting son.method
in father.method
ending son.method
In[80]: s_.method() # 调用父类的方法“method”
in father.method
追问
非常感谢你,我是想在子类中重写method的方法,在调用父类的方法,因为初学,所以有很多不懂的地方。希望以后还能再向你请教。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式