""" 面向对象: 1. 概念:把具有共同属性、共同方法(函数)的对象进行归纳,相同代码写到同一个class中(封装) 2. 作用:代码复用 3. 特点:封装、继承、多态 3.1 封装:定义一个类 3.2 继承:子类可以有父类的属性和方法,子类不用重写定义,代码复用 3.3 多态:同一段代码因为传入参数不同,导致结果也不同 """ class Animal(object): # 类属性:所有实例化的对象的“全局变量” count = 0 # Animal.count or animal.count __height = 10 #私有类属性 def __init__(self, name): # 初始化函数:实例化对象时自动执行,实例属性一般定义在这里 self.name = name # 实例属性 self.age = 1 self.__weight = 0 # 私有属性 Animal.count += 1 # 自增类属性 用于计数 def __siyouFunction(self): print('这是私有方法,类外不能调用') # 但是在类定义内部,可以访问私有属性或私有方法 self.__weight = 10 # def get_weight(self): # self.__siyouFunction() # # 这是专门获取私有属性的方法 建立一个函数以使用私有属性 # return self.__weight def __str__(self): # print(对象) 会自动调用本函数 return '只能返回字符串' def __del__(self): # python解释器在结束执行之前会自动执行删除类对象的动作 print('在删除时,额外增加功能') # 实例方法 def myFunction(self): # self就是实例对象 return '这就是一个实例方法,默认必带self参数' # 类方法:进行操作类属性 @classmethod def clsFuncion(cls): # cls是类 return '默认必带cls参数' #常用于计数等 # 静态方法:和类中的属性、方法都没啥关系 # 代码玩家自己强行觉得应该放在这个类中 @staticmethod def staticFounction(): return '不带self,不带cls参数' class BigDog(Animal): def run(self): print('大狗跑') class SmallDog(Animal): def run(self): print('小狗跑') class SuperDog(SmallDog, BigDog): # 继承链:【只】在SuperDog看来,SmallD是爸爸,BigD是爷爷,Animal是太爷爷 # 多继承时,子类执行同名函数时,如果没有重写,会优先执行最左边的父类 def __init__(self, name, color): # todo 调用父类的函数 # 调用 SmallDog的 初始化 函数 # 重写init初始化函数的同时,增加额外功能 # 本质:父类的该函数执行,同时,再增加点功能 # 三种方法: SmallDog.__init__(self, name=name) #直接调用 todo 父类 .函数(self,参数) super(SuperDog, self).__init__(name=name) # 作用同上 todo super(本身子类,self).函数(参数) super().__init__(name=name) # 作用同上 #todo 都是调用SuperDog的父类SmallDog的函数 # todo 调用指定的祖先类的函数 # 调用 BigDog的 初始化 函数 BigDog.__init__(self, name=name) super(SmallDog, self).__init__(name=name) # 作用同上 self.color = color def run(self): # 重写父类方法 todo 直接覆写 同名方法 print('超级狗起飞了') # SmallDog.run(self) if __name__ == '__main__': SuperDog(name='hahah', color='彩条').run() # 执行的是SmallDog.run() print('='*10) # 类中函数的调用 Animal('哺乳动物').myFunction() # 调用实例方法 Animal.clsFuncion() # 调用类方法 Animal('哺乳动物').clsFuncion() # 调用类方法 Animal.staticFounction() # 调用静态方法 Animal('哺乳动物').staticFounction() # 私有属性调用 # print(Animal('哺乳动物').__weight) # print(Animal._Animal__weight) print(Animal('哺乳动物')._Animal__weight) # 私有方法调用 print(Animal('哺乳动物')._Animal__siyouFunction()) # todo 加上__类名前置 以强制取用 ret = Animal('狗').count print(ret)
__Python 面向对象
最新推荐文章于 2024-05-30 11:43:13 发布