您的位置:首页 > 编程语言 > Python开发

关于python 的继承

2017-04-21 18:52 337 查看
在OOP程序设计中,从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。

在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: