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方法

多态示例: