Python“继承”问题 很简单,帮忙回答一下!
例子:
----------------------------------
class SchoolMember:
def __init__(self, name, age):
self.name = name
self.age = age
class Teacher(SchoolMember):
def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary
-----------------------------------
说明: 基础类是学校成员(schoolmember) 老师类,继承 学校成员类。
疑问:“def __init__(self, name, age, salary):”
为什么 self,name,age 还要再输入一次? 不能直接继承吗?
如果真的是这样的话,将来如果改动了基础类,是不是所有的继承它的类,都要像类似这样的改动? 其他的函数,与上面的例子(就是__init__),使用方法都是这样吗?
[解决办法]
> > 为什么 self,name,age 还要再输入一次? 不能直接继承吗?
你说的是这一句?
SchoolMember.__init__(self, name, age)
基类的构造函数并不知道应该使用什么参数来调用。
比如你可能想:
SchoolMember.__init__(self, "none ", "1 ")
也可能想:
SchoolMember.__init__(self, name+ "@csdn ", age)
所以你有义务显式指定参数。
> > 如果真的是这样的话,将来如果改动了基础类,是不是所有的继承它的类,
> > 都要像类似这样的改动?
如果基类的__init__增加了一个参数,从责任上来讲,派生类的__init__可能也需要增加一个参数。
但是你可以将改动最小化,比如在基类__init__中设置默认参数。
> > 其他的函数,与上面的例子(就是__init__),使用方法都是这样吗?
你可以将__init__看做一个普通的函数。如果一个函数需要调用其它的函数,那么当被调用的函数接口变动的时候,调用方可能也需要做相应的调整。