Python笔记-继承的使用

class Animal(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def sleep(self):
        print(self.name + '正在睡觉')
class Dog(Animal):
    # def __init__(self,name,age):
    #     self.name = name
    #     self.age = age
    # def sleep(self):
    #     print(self.name + '正在睡觉')
    def bark(self):
        print(self.name + '正在叫')
class Student(Animal):
    def study(self):
        print(self.name + '正在学习')

"""
Dog() 调用 __new__方法,再调用 __init__方法
Dog 里没有 __new__ 方法,会查看父类是否重写了 __new__方法
父类里也没有重写1 __new__方法,查找父类的父类,找到了 object
"""
# 调用 __init__方法,Dog类没有实现,会自动找 Animal 父类
d1 = Dog('大黄',3)
print(d1.name)  # 父类里1定义的属性,子类可以直接使用
d1.sleep()      # 父类的方法子类实例对象可以直接调用
d1.bark()
s1 = Student('张三',20)
s1.sleep()
s1.study()
# s1.bark()

"""**************************************************************************"""
# 继承的特点
class A(object):
    def demo_a(self):
        print('我是A类里的方法demo_a')
    def foo(self):
        print('我是A类里的方法foo')
class B(object):
    def demo_b(self):
        print('我是B类里的方法1demo_b')
    def foo(self):
        print('我是B类里的方法foo')
# python里允许多继承
class C(A,B):       #我是A类里的方法foo
# class C(B,A):     #我是B类里的方法foo
    pass
c = C()
c.demo_a()
c.demo_b()
c.foo()     #如果两个不同的父类有同名方法,会根据继承的顺序来找      深度优先

结果

<__main__.Person object at 0x029EEE90> <__main__.Person object at 0x02ABEED0> <__main__.Person object at 0x02AD50B0>
3

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值