python类的继承--------类的基础(四)

 class schoolmember(object):

    def __init__(self,name,age):

        self.name = name

        self.age = age

        print("Itializing school member:%s" %self.name)

 

    def tell(self):

        print("name:%s,age:%s" %(self.name,self.age))

 

class teacher(schoolmember):

    def __init__(self,name,age,salary):

        #这里的参数必须和基类的参数名完全相同,除了自身的salary

        schoolmember.__init__(self,name,age)#这里的参数也必须和基类参数名相同

        #这句说明该子类继承基类的name和age属性

        self.salary = salary#这句说明和添加子类自身特有的属性salary

        print("Initializing teacher is :%s" % self.name)

def tell(self):

        schoolmember.tell(self)#调用基类的函数

        print("salary:%d" % self.salary)

 

class student(schoolmember):

 

    def __init__(self,name,age,marks):

        schoolmember.__init__(self,name,age)

        self.marks = marks

        print("Initializing student : %s" % self.name)

 

    def tell(self):

        schoolmember.tell(self)

        print("marks :%d" % self.marks)

 

t = teacher("mrs.kite",40,30000)#先调用基类的初始化函数然后调用子类本身的初始化函数

s = student("Tom",14,89)#形成实例对象

 

members = [t,s]

for member in members:

    member.tell()
 

为了使用继承,我们把基本类的名称作为一个元组跟在定义类时的类名称之后。然后,我们注意到基本类的__init__方法专门使用self变量调用,这样我们就可以初始化对象的基本类部分。这一点十分重要——Python不会自动调用基本类的constructor,你得亲自专门调用它。

我们还观察到我们在方法调用之前加上类名称前缀,然后把self变量及其他参数传递给它。

注意,在我们使用SchoolMember类的tell方法的时候,我们把TeacherStudent的实例仅仅作为SchoolMember的实例。

另外,在这个例子中,我们调用了子类型的tell方法,而不是SchoolMember类的tell方法。可以这样来理解,Python总是首先查找对应类型的方法,即现在子类中寻找相应的方法,如果找不到,再到基类中去找。也就是说,如果它不能在导出类中找到对应的方法,它才开始到基本类中逐个查找。基本类是在类定义的时候,在元组之中指明的。

一个术语的注释——如果在继承元组中列了一个以上的类,比如 class subclass(superclass1,superclass2,superclass3)那么它就被称作 多重继承

 

 

转载于:https://my.oschina.net/piginwind/blog/692651

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值