小菜鸟学习Python之路--OOP(2)

继承和多态

class Human(object):
    def learn(self):
       print('Human is learning')
class Qin(Human):  #继承human类
    pass
qin = Qin()
qin.learn()   #输出结果是'Human is learning',获得human的learn()功能

子类Qin 获得父类Human的功能,即继承

class Qin(Human):
    def learn(self):
        print('Qin is learning')
#运行结果是'Qin is learning'

子类和父类拥有相同方法时,子类可以覆盖父类的learn()。即多态

我们再定义一个接受Human类型变量的函数,则子类型都可以获得这种方法

def learn_twice(Human):
    human.learn()
    human.learn()
learn_twice(Qin())   #Qin is learning
                     #Qin is learning

只要接受Human 类型,都可以在不改动的情况下调用learn_twice方法,先进行子类的learn(),再进行接受Animal类型的learn_twice方法不对子类型加以辨别

 

获取对象信息

isinstance(xxx, class)

判断xxx是不是 某class 类型

hasattr(obj, 'beauty')对象有beauty属性嘛?

setattr(obj, 'beauty',eye)给对象加上beauty属性  迷人的eye

getattr(obj, 'beauty')获得对象的beauty属性

 

实例属性和类属性

相同名称时,实例属性会覆盖类属性。若实例属性不存在,则会输出同名类属性。

class Beauty(object):
    feature = 'beauty'  #给Beauty类添加feature属性
    def __init__(self,feature):
        self.feature = feature

s = Beauty()
s.feature       #因未输入s的feature,故输出Beauty类的feature  ‘beauty’

廖雪峰Python习题

为了统计学生人数,可以给Student类增加一个类属性,每创建一个实例,该属性自动增加:

所有实例都共享类属性

class Student(object):
    count = 0   #类属性

    def __init__(self, name):
        self.name = name
        Student.count += 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值