python 的继承学习

原创 2016年08月29日 23:58:48
class SchoolMember:
    '''Represents any school member.'''
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print '(Initialized SchoolMember: %s)' % self.name

    def tell(self):
        '''Tell my details.'''
        print 'Name:"%s" Age:"%s"' % (self.name, self.age),

class Teacher(SchoolMember):
    '''Represents a teacher.'''
    def __init__(self, name, age, salary):
        SchoolMember.__init__(self, name, age)
        self.salary = salary
        print '(Initialized Teacher: %s)' % self.name

    def tell(self):
        SchoolMember.tell(self)
        print 'Salary: "%d"' % self.salary

class Student(SchoolMember):
    '''Represents a student.'''
    def __init__(self, name, age, marks):
        SchoolMember.__init__(self, name, age)
        self.marks = marks
        print '(Initialized Student: %s)' % self.name

    def tell(self):
        SchoolMember.tell(self)
        print 'Marks: "%d"' % self.marks

t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)

print # prints a blank line

members = [t, s]
for member in members:
    member.tell() # works for both Teachers and Students

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

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

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

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

一个术语的注释——如果在继承元组中列了一个以上的类,那么它就被称作 多重继承 。


相关文章推荐

python学习——继承和多态

在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Supe...

Python学习笔记(四) 多重继承及内部算法解析

多重继承Python

Learn Python The Hard Way学习(44) - 继承还是组成?

balabala...讲了一个故事,就不翻译了。 只要记着:我们要尽量简单的使用继承,或者用组合代替继承,而且做好不要使用多继承。 什么是继承? 继承被用来指明一个类可以从它的父...

python学习笔记6.4-类的多重继承(super()函数)

说到面向对象,就少不了研究面向对象的特点(继承,封装,多态)。Python中类的继承的关键是正确使用super()函数,而这恰好是我们理解最不好的地方。...

python类学习以及mro--多继承属性查找机制

还记得什么是新式类和旧式类吗? python中,一个class继承于object,或其bases class里面任意一个继承于object,这个class都是new-style class。 --...
  • imzoer
  • imzoer
  • 2013年03月29日 17:40
  • 11086

Python2.7 学习笔记 (三)—— 类,继承,重载

16:56 2012-3-9 声明:以下代码都是在Python2.7+Winxp中执行通过 [面向对象] 1.类的定义 #-*-coding:utf-8-*- class student...
  • hpf911
  • hpf911
  • 2012年03月12日 18:38
  • 3465

Python基础学习--第十三章(类的继承)

(一)继承的定义 什么是继承: 新类不必从头编写 新类从现有的类继承,就自动拥有了现有类的所有功能 新类只需要编写现有类缺少的新功能 继承的好处: 复用已有代码 自动拥有了现有类的所有功...

Python学习笔记2:类的定义和继承

# 类的定义 格式: class 类名(父类):     __init(self,参数)     成员方法     成员变量 # 所有类的基础object #  私有方法和变量使...

Python学习笔记--类简介,继承,私有成员

Python中也有类的概念,且与所有面向对象语言类似(更类似于java,而不是C++),只是没有public, private, protected关键字。Python使用自己的方法支持这些关键字的功...

Python学习笔记(5)-多重继承的坑

之前学习了下多重继承,以为领悟到了,没想到实际在项目中傻眼了。 忘了一个关键的地方: 正文 首先得说明的是,Python的类分为经典类 和 新式类 经典类是python2.2之前的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python 的继承学习
举报原因:
原因补充:

(最多只允许输入30个字)