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

python进阶四:类的继承

2015-07-20 15:23 573 查看
python继承:(1)总是从某个类继承

(2)要用父类super方法进行初始化。

继承一个类 :Teacher继承自Person类 正确调用父类的__init__方法
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender

class Teacher(Person):

def __init__(self, name, gender, course):
super(Teacher,self).__init__(name,gender)
self.course=course

t = Teacher('Alice', 'Female', 'English')
print t.name
print t.course


判断 实例类型:isinstance(instance,class)

class Person(object):

def __init__(self, name, gender):
self.name = name
self.gender = gender

class Student(Person):

def __init__(self, name, gender, score):
super(Student, self).__init__(name, gender)
self.score = score

class Teacher(Person):

def __init__(self, name, gender, course):
super(Teacher, self).__init__(name, gender)
self.course = course

t = Teacher('Alice', 'Female', 'English')

print isinstance(t,Person)
print isinstance(t,Student)
print isinstance(t,Teacher)
print isinstance(t,object)


多态:这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

import json

class Students(object):
def read(self):
return r'["Tim","Bob","Alice"]'
s = Students()

print json.load(s)


多重继承:python支持多重继承,一个类可以有多个父类

class Person(object):
pass

class Student(Person):
pass

class Teacher(Person):
pass

class SkillMixin(object):
pass

class BasketballMixin(SkillMixin):
def skill(self):
return 'basketball'

class FootballMixin(SkillMixin):
def skill(self):
return 'football'

class BStudent(BasketballMixin,Student):
pass

class FTeacher(FootballMixin,Teacher):
pass

s = BStudent()
print s.skill()

t = FTeacher()
print t.skill()


获取对象信息:

isinstance(instance,class)

type(instance)获得对象类型

dir(instance)获得instance所有属性

getattr(instance,attr)获得instance指定属性值

setattr(instance,k,v)给instance绑定属性k 值为v
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: