python面向对象之继承

'''
什么是继承?
专业角度:B继承A类,B就叫做A的子类,A叫做B的父类,基类,超类。B类以及B类的对象
使用A类的所有属性以及方法

字面意思:继承就是继承父母的所有资产。
单继承,多继承

继承的优点:1、节省代码 2、增强耦合性 3、代码规范

继承分为单继承和多继承
Person Dog  Cat :子类,派生类
Animal :父类,基类,超类
单继承:使用。
多继承:有区别
'''
# class Animal:
#     def __init__(self,name,age,sex):
#         self.name = name
#         self.age = age
#         self.sex = sex
#
# class Person(Animal):
#     pass
#
# class Dog(Animal):
#     pass
#
# class Cat(Animal):
#     pass
#
# class A:
#     pass

# class Animal:
#
#     live = '有生命的'
#     def __init__(self,name,age,sex):
#         self.name = name
#         self.age = age
#         self.sex = sex
#
#     def eat(self):
#         print('动物都要进食')
#
#
# class Person(Animal):
#
#     def eat(self):
#         print('人类都需要进食')

#1、从类名执行父类的属性。
# print(Person.__dict__)
# print(Person.live)
# print(Person.eat(1))
# 2、从对象执行父类的一切,实例化对象一定会的三件事,一定会执行__init__
# p1 = Person('dab',21,'laddy boy')
# print(p1.__dict__)
# p1.eat()
# print(p1.live)
# Person.live='111'
# print(Person.live)
#注意:子类及子类对象只能调用父类的属性以及方法,不能操作(增删改)。
#子类将父类的方法覆盖了,(重写父类方法)
# p1.eat = '111'
# print(p1.eat)
#对象查找顺序先从对象空间找名字,子类找名字,父类找名字。

class Animal:

    live = '有生命的'
    def __init__(self,name,age,sex):
        self.name = name
        self.age = age
        self.sex = sex

    def eat(self):
        print('动物都要进食')

#如何既要执行父类属性,有要执行子类属性
class Person(Animal):

    def __init__(self,name,age,sex,hobby):

        #方法一:
        # Animal.__init__(self,name,age,sex)
        # 方法二:
        super().__init__(name,age,sex)
        self.hobby = hobby


    def eat(self):
        super().eat()
        print('人类都需要进食')

p1 = Person('coco',22,'不详','吹牛逼')
print(p1.__dict__)
p1.eat()

class God:

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

    def climb(self):
        print('神仙累了也要爬树')

    def flt(self):
        print('会飞')

class Monkey:

    def __init__(self,sex):
        self.sex = sex

    def climb(self):
        print('爬树')

class MonkeySun(Monkey,God):
    pass
#多继承的难点就是继承顺序问题

qtds = MonkeySun('齐天大圣')
qtds.climb()
'''
多继承:
面向对象:
python2.2 之前都是经典类,python2.2直至python2.7之间存在两种类型:经典类,新式类
经典类 :基类不继承object,查询规则依靠深度优先的原则
新式类:基类必须继承object,查询规则:mro算法
python3x只有新式类

'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值