【Python】Python学习笔记(类的继承)
2011-09-09 16:17
323 查看
单继承 具体的语法就不说了。我很关心的是它到底继承了什么 单继承条件下很简单。类的静态变量、类的静态方法、实例的方法、实例的成员变量、基类的构造函数、基类的析构函数都可以从父类中继承过来。私有方法和私有变量是不能继承的。具体看测试代码: class Student: '''this test class''' name = 'ss' age = 13 def __init__(self): self.name='bb' self.addr="shanghai" self.__love="man" print "init..." def __del__(self): print "dead..." def Run(self): print 'people Run' @staticmethod def RunStatic(): print "In Static method..." def __Good(self): print "good" class MiniStudent(Student): pass #类 print MiniStudent.name print MiniStudent.age print MiniStudent.RunStatic() print "----================--------" #实例 mini = MiniStudent() print mini.name print mini.age print mini.Run() print mini.addr 多继承 多继承下,情况明显比这复杂而且,而且会产生多个基类覆盖函数的问题。很幸运,C#中已经没有了多继承,你只能从多个接口继承。正因为这样,我感觉这种多继承应该一般不需要用,否则代码会很晦涩。下面这个例子你就可以看到。在上面的例子中,我多添加了一个StudentA的类。 具体看测试代码: class StudentA: def __init__(self): print 'init-studenta' def GoCar(self): print "Go Car" class Student: '''this test class''' name = 'ss' age = 13 def __init__(self): self.name='bb' self.addr="shanghai" self.__love="man" print "init..." def __del__(self): print "dead..." def Run(self): print 'people Run' @staticmethod def RunStatic(): print "In Static method..." def __Good(self): print "good" class MiniStudent(Student,StudentA): pass #类 mini = MiniStudent() print mini.name print mini.age print mini.Run() print mini.addr 现在这个例子是可以通过的,但如果你把 class MiniStudent(Student,StudentA) 修改成 class MiniStudent(StudentA,Student) 这个代码就通不过了。告诉你mini.addr没有定义。 其实是StudentA的构造函数覆写了Student的函数,也就是说只调用了StudentA.__init__()的方法。下面就谈到继承中的覆写问题。 继承中的覆写 从上面的经验可以得到 Python的多继承,但有以下几点需要注意: 1. 继承方法的调用和基类声明顺序有关(最先使用的覆写之后的方法)。 2. 基类init、del ,如果希望都使用,请显示的调用,否则很容易出错。 class StudentA: def __init__(self): print 'init-b' class Student: def __init__(self): print 'init-a' class MiniStudent(Student,StudentA): def __init__(self): StudentA.__init__(self) Student.__init__(self) #实例 mini = MiniStudent() |
相关文章推荐
- python学习笔记14(多态、封装、继承)
- 【Python】学习笔记——-7.3、继承和多态
- 初学Python的学习笔记10----多重继承、定制类、枚举类
- python 学习笔记(9)调试与类继承
- 【Python学习笔记】面向对象编程:继承和多态
- Pyhon学习笔记2:Python中的类的继承
- Python学习笔记8-类的继承 、深度优先、广度优先
- 初学Python的学习笔记8----面向对象、数据封装、访问限制、继承和多态
- Python 学习笔记 - 面向对象(封装,继承和多态)
- Python学习笔记8-类的继承 、深度优先、广度优先
- Python学习笔记(11):类的继承
- python学习笔记14(多态、封装、继承)
- python进阶学习笔记(四)——python中访问限制、创建类属性、定义实例方法、定义类方法、类的继承
- Python3 学习笔记 -- 继承
- python学习笔记——旧类与新类继承中的构造函数
- 【Python】学习笔记——-8.3、面向对象高级编程:3.多重继承
- 【python学习笔记】Python面向对象的理解(封装,继承,多态)
- Python2.7 学习笔记 (三)—— 类,继承,重载
- Python学习笔记--类简介,继承,私有成员
- python学习笔记6.4-类的多重继承(super()函数)