python学习(9)- 面向对象3

Python学习(8)- 面向对象2

https://blog.csdn.net/caoyan0829/article/details/109810524

面向对象的三大特性:

"""
封装
1.把属性封装到对象当中,方便调用
2.把相同的功能封装同一方法中,方便调用
"""

"""
继承
1.顶级父类是Object
2.如果不同类中有相同的行为或属性 可以用继承
"""


"""
多态
1.同一种事务,具有多种形态
2.前提要有继承关系
"""


class Animal(object):  # 父类 基类
    def __init__(self):
        self.name = "小黑"

        # 私有属性和行为不能继承
        self.__color = "三花"

    def eat(self):
        print('吃饭')


class Sea(object):
    def dh(self):
        print("海洋动物")


class Dog(Animal):  # 子类 派生类
    # 重写
    def eat(self):
        print('吃狗粮')
        # 调用父类方法 super
        super().eat()


class Cat(Animal):  # 子类
    pass


class Pig(Animal):
    pass


class HaShiQi(Dog):  # 也有eat 方法等
    pass


d = Dog()
d.eat()
# print(d.__color)
print(d.name)
c = Cat()
c.eat()

# 多继承   广度继承  继承顺序同级的优先
class HaiShi(Animal,Sea):
    pass

haishi = HaiShi()
haishi.eat()
haishi.dh()



#isinstance(对象,类)  返回布尔


#单例模式
#不管创建了多少对象,我们在内存中只有一个唯一的对象

class DanLi(object) :
    __instance = None #装对象的引用

    def __new__(cls, *args, **kwargs): #创建对象
        if cls.__instance is None:
            cls.__instance = super().__new__(cls)
            return  cls.__instance
        else:
            return cls.__instance
    def __init__(self,name): #给对象初始化,所以每次执行会初始化一个对象
        self.name = name


d = DanLi('hashiq')
d1 = DanLi('hashiq1')
d2 = DanLi('hashiq2')

print(id(d)) #2953367550416
print(id(d1)) #2953367550944
print(id(d2)) #2953367550320

Python学习(10)- 文件操作

https://blog.csdn.net/caoyan0829/article/details/110530723

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页