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

python中类的继承与方法重写

2016-06-21 18:01 483 查看
在python中继承中的一些特点:

1:在继承中基类的构造(init()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。

2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数

3:Python总是首先查找对应类型的方法,如果它不能在派生类(子类即当前类)中找到对应的方法,它才开始到基类(父类)中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。

4:由上面的关系,可以进行方法的重写,在子类中重写父类方法。

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

语法:

派生类的声明,与他们的父类类似,继承的基类列表跟在类名之后,如下所示:

父类以元组的形式存在:

class SubClassName (ParentClass1[, ParentClass2, ...]):
'Optional class documentation string'
class_suite


实例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Parent:
"父类"
parentAttr = 100
def __init__(self):
print "调用父类构造函数"

def parentMethod(self):
print '调用父类方法'

def setAttr(self, attr):
Parent.parentAttr = attr

def getAttr(self):
print "父类属性 :", Parent.parentAttr

class Child(Parent):
"定义子类"
def __init__(self):
print "调用子类构造方法"

def childMethod(self):
print '调用子类方法 child method'
#在子类中调用父类方法
print Parent.getAttr(self)

c = Child()          # 实例化子类
c.childMethod()      # 调用子类的方法
c.parentMethod()     # 调用父类方法
c.setAttr(200)       # 再次调用父类的方法
c.getAttr()          # 再次调用父类的方法


检测类之间的父子关系:

issubclass() - 布尔函数(zi,fu)判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)
isinstance(obj, Class) 布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象则返回true。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 面向对象