关于python 的继承
2017-04-21 18:52
337 查看
在OOP程序设计中,从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
在Python的类继承中,派生类不会自动调用基类的构造函数(__init__方法),需要在派生类的构造函数中主动调用(这一点跟C++蛮像的)。
当我们需要调用基类的方法,需要加上基类的类名前缀,此外,还需要传递self参数(这与我们平时在类中调用普通函数的情况不一样)。
当我们类的实例调用某一函数的时候,先从本类查找函数原型,若不存在,则查找基类。多重继承时,从本类查找函数原型,若不存在,则从左到右依次查询基类。
如果,基类是在基类模块中,需要在基类前加上基类模块的模块名,即:模块名.基类名。
类的专有方法:
__init__ 构造函数,在生成对象时调用
__del__ 析构函数,释放对象时使用
__repr__ 打印,转换
资料来源:
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431865288798deef438d865e4c2985acff7e9fad15e3000
http://www.jb51.net/article/65700.htm
在Python的类继承中,派生类不会自动调用基类的构造函数(__init__方法),需要在派生类的构造函数中主动调用(这一点跟C++蛮像的)。
当我们需要调用基类的方法,需要加上基类的类名前缀,此外,还需要传递self参数(这与我们平时在类中调用普通函数的情况不一样)。
当我们类的实例调用某一函数的时候,先从本类查找函数原型,若不存在,则查找基类。多重继承时,从本类查找函数原型,若不存在,则从左到右依次查询基类。
#! /usr/bin/python class Base(): def __init__(self,name,age): self.name = name self.age = age print "Base __init__ function" def run(self,value): print "Baseclass run with value:%d" %(value) class Subclass(Base): def __init__(self,name,age,sex): print "Subclass __init__ function" Base.__init__(self,name,age) #这里需要指出是Base类的__init__,并传入self参数 self.sex = sex def run(self,value): print "Subclass run with value:%d" %(value) if __name__=="__main__": a = Base("one",18) a.run(100) b = Subclass("two",20,"male") b.run(200) #这里b调用的是subclass的run函数,而不是baseclass的run函数 print b.name print b.age print b.sex
如果,基类是在基类模块中,需要在基类前加上基类模块的模块名,即:模块名.基类名。
类的专有方法:
__init__ 构造函数,在生成对象时调用
__del__ 析构函数,释放对象时使用
__repr__ 打印,转换
资料来源:
http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431865288798deef438d865e4c2985acff7e9fad15e3000
http://www.jb51.net/article/65700.htm
相关文章推荐
- Python中关于封装,继承,多态的表述
- 关于Python中的类普通继承与super函数继承
- 关于python的继承,super关键字
- Python2与Python3中关于最上层类继承上的一点小差异
- Python中关于类继承
- 关于Python的Object继承
- 关于python类继承中metaclass conflict的处理
- 关于python类继承中metaclass conflict的处理
- 关于Python中的类普通继承与super函数继承
- 关于 python 新式类和旧式类继承顺序的验证
- 关于OOP中的实例复用和继承复用
- [ZT]给Asp.Net初学者的关于继承和多态性的例子
- 关于继承和覆盖(Override)的一些基础知识
- [导入]关于petshop中simplepager(继承自Repeater)覆写DataSource的问题
- c#过程中遇到的关于构造函数和继承的问题
- 一个关于继承和多态的问题(思索篇)
- 关于Python的Debug...
- 关于在组件GIS开发中使用Python的一点补充说明
- 关于 python 中使用 lambda 表达式的问题
- [导入]关于petshop中simplepager(继承自Repeater)覆写DataSource的问题