python进阶四:类的继承

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值