python面向对象----继承

继承:类与类之间也是存在一种继承的关系

目录

子类选择性继承父类

重写与重载

多继承

super关键字


子类选择性继承父类

注意:子类只能继承父类公开的属性和方法,私有的属性和方法不能被继承

#父类:Father类 子类:Son类 
class Father(object):
    def __init__(self,name,age):
        self.name = name  #公有属性
        self.__age = age  #私有属性

    def run(self):         #公有方法
        print("我会跑")

    def __work(self):      #私有方法
        print("我要上班")

class Son(Father):
    pass

u1 = Son("张一一","3")
print(u1.name)
u1.run()
>>>
张一一
我会跑

print(u1.__age)
u1.__work()
>>>
发生异常

重写与重载

python中有方法重写,但没有方法重载(重载:函数名称相同,但是参数的个数或类型不同)。但是可以通过装饰器实现方法重载

继承可以实现方法的重写(覆盖)

注意:重写方法的时候,方法的名称,参数一定要和父类一致

#在子类中重写父类的work方法
class Father(object):
    def __init__(self,name,age):
        self.name = name  
        self.__age = age 

    def work(self):     
        print("我要上班")

class Son(Father):
    def work(self):     
        print("我要上学")

u1 = Son("张一一","3")
u1.work()
>>>
我要上学

多继承

python支持多继承,多继承按继承的顺序来找

#A类继承了B,C,object 三个类
class B(object):
    def H(self):
        print("这是B的方法")

class C(object):
    def H(self):
        print("这是C的方法")

class A(B,C,object): #继承顺序先B-C-object
    pass

a = A()
a.H() #按继承顺序调用方法
>>>
这是B的方法

super关键字

是一个指针,默认指向的父类

class Father(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def work(self):
        print("我要上班")

class Son(Father):
    def work(self):
        print("我要上学")

    def test(self):
        self.work()
        super().work()

u1 = Son("张一一","3")
u1.test()
>>>
我要上学
我要上班

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值