• Python 面向对象


    """
    面向对象编程的主要特点:
    多态:不同类的对象对同一消息会做出不同的响应
    封装:对外部世界隐藏对象的工作细节
    继承:以已有的类为基础建立专门的类对象

    函数
    方法:和实例绑定的函数称之为方法
    """

    示例代码:

     1 class Aclass():
     2 
     3     a = '类变量a,它的值将在这个类的所有实例之间共享。可以在内部类或外部类使用 Aclass.a 访问'
     4     __aa = '类私有属性'
     5 
     6     def __init__(self,b):
     7         print('_init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法')
     8         self.b = b   # 实例化类时传入参数b,即传给self.b
     9         self.d = Aclass.a   # 把类变量的值传给变量d
    10 
    11     def cls_func_1(self):
    12         c = '局部变量c'
    13         print("这是类的方法")
    14         print(f"c: {c}")
    15         print(f'Aclass.a:{Aclass.a}')
    16         print(f'self.b:{self.b}')
    17 
    18     def __cls_func_2(self):
    19         print("类私有属性方法")
    20 
    21 
    22 def func1():
    23     print("这是普通的函数")
    24     print(f"类外部访问类变量a: {Aclass.a}")
    25 
    26 
    27 # 实例化类 - 对象
    28 cls = Aclass(100)  # 类里传入的参数其实就是__init__()参数

    对象:如代码,cls就是Aclass类实例化后的具体对象

    面向对象的作用:把程序进行封装、方便重复利用,提高效率。

    继承示例:

     1 class Aclass():
     2 
     3     a = '类变量a,它的值将在这个类的所有实例之间共享。可以在内部类或外部类使用 Aclass.a 访问'
     4     __aa = '类私有属性'
     5 
     6     def __init__(self,b):
     7         print('_init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法')
     8         self.b = b   # 实例化类时传入参数b,即传给self.b
     9         self.d = Aclass.a   # 把类变量的值传给变量d
    10 
    11     def cls_func_1(self):
    12         c = '局部变量c'
    13         print("这是类的方法")
    14         print(f"c: {c}")
    15         print(f'Aclass.a:{Aclass.a}')
    16         print(f'self.b:{self.b}')
    17 
    18 
    19 class Bclass(Aclass):
    20     
    21     def __init__(self,b):
    22         super().__init__(b)
    23 
    24 cls = Bclass(100)
    25 cls.cls_func_1() 

    Bclass类继承了Aclass类所有,可以直接使用Aclass类的属性、方法

    可以继承多个类,如Bclass(Aclass, Cclass, Dclass)

    重写示例:

     1 class Aclass():
     2 
     3     a = '类变量a,它的值将在这个类的所有实例之间共享。可以在内部类或外部类使用 Aclass.a 访问'
     4     __aa = '类私有属性'
     5 
     6     def __init__(self,b):
     7         print('_init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法')
     8         self.b = b   # 实例化类时传入参数b,即传给self.b
     9         self.d = Aclass.a   # 把类变量的值传给变量d
    10 
    11     def cls_func_1(self):
    12         c = '局部变量c'
    13         print("这是类的方法")
    14         print(f"c: {c}")
    15         print(f'Aclass.a:{Aclass.a}')
    16         print(f'self.b:{self.b}')
    17 
    18 
    19 class Bclass(Aclass):
    20 
    21     def __init__(self,b):
    22         print('重写了__init__')
    23         self.b = b
    24 
    25     def cls_func_1(self):
    26         print('重写Aclsss类的cls_func_1()方法,当Bclass调用cls_func_1方法时,就是这个,不再是Aclass的l')

    上面代码重写了__init__方法和cls_func_1方法

    多态示例:

     1 # ************* 多态 *************
     2 class Animal():
     3     def __init__(self, name):
     4         self.name = name
     5 
     6     def sound(self):
     7         print(f'{self.name}\'s sound')
     8 
     9 class Dog(Animal):
    10     def sound(self):
    11         print('wang')
    12 
    13 class Cat(Animal):
    14     def sound(self):
    15         print('miao')
    16 
    17 def hello(animal):
    18     animal.sound()
    19 
    20 dog = Dog('dog')
    21 hello(dog)
    22 
    23 cat = Cat('cat')
    24 hello(cat)
    25 
    26 #cat 和 dog 是两个不同的对象,对它们调用同个方法,它们会自动调用实际类型的sound方法,作出不同的响应。这就是多态的魅力。
  • 相关阅读:
    Android购物商城
    Android简易计算器
    安卓第四周作业
    第一次安卓作业
    十五周课后习题
    第十三周作业
    十三周上机练习
    第十二周作业
    第十二周练习
    11周上机作业(5.14)
  • 原文地址:https://www.cnblogs.com/sue2015/p/15985070.html
Copyright © 2020-2023  润新知