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 展开
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 展开
展开全部
我的是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
这里有两个问题:
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的方法,在调用父类的方法,因为初学,所以有很多不懂的地方。希望以后还能再向你请教。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询