python学习笔记5

面向对象的三大特性
封装

        1、把属性封装到对象当中,方便调用。

        2、把相同的功能封装到同一方法当中,方便调用。

继承

        1、python顶级父类是object。

        2、如果不同类中有相同的行为或属性,这个时候我们就要考虑用继承。

        3、减少代码,实现代码复用。

        4、具有传递性。

        5、当父类的行为满足不了子类的行为时,就需要重写。

        6、私有属性和私有方法是继承不过来的。

多态

        1、同一种事物具有多种形态

        2、多态的前提是有继承关系

        3、调用同一种行为产生了不同的结果

单例模式:

        不管创建多少个对象,在内存中只有唯一的对象。

class Animal(object):#父类 == 基类
    def __init__(self):
        self.name = '动物'
    def eat(self):
        print('吃东西')
    def play(self):
        print('玩')
class Dog(Animal):#子类 == 派生类
    __instance = None #装对象的引用
    __init_flag = False
    def __new__(cls, *args, **kwargs):#创建对象
        #创建对象的逻辑
        if cls.__instance is None:
            cls.__instance = super().__new__(cls)#用父类的方法创建对象
            return cls.__instance#ID不变
        #多线程创建时会有问题
        else:
            return cls.__instance
    def __init__(self,name):
        if not Dog.__init_flag:
            self.name = name
            Dog.__init_flag = True#只认第一次输入的名字
    def play(self):
        print('狂奔')
class Cat(Animal):#子类
    def eat(self):#重写父类的方法
        print('吃鱼')
        super().eat()#调用父类方法
class Bear(Animal):#子类
    def play(self):
        print('抓鱼')
class Person(Animal):
    def play_with_animal(self,animal):
        animal.play()#多态
person = Person()
bear = Bear()
dog = Dog('哈士奇')
cat = Cat()
cat.eat()
person.play_with_animal(dog)#填bear结果会不同

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值