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)- 文件操作