o1_什么是类对象.
1 # Learner BM 2 3 """ 4 python中,所有皆为对象,包括每次定义的类也属于对象, 5 既然属于对象,也应该有自己的属性和方法,类对象的在内存中只有一份,而实例对象在内存中存在多份 6 类对象除了封装实例的属性二号方法外,也能够拥有自己的属性和方法 7 作用,通常为记录类相关的特征,与对象无关的特征 8 例如,创建一个类属性,记录查看此类到底创建了多少个实例的属性 9 10 1,类属性-----记录根类相关的特征 11 类名.属性进行访问 12 2,类方法----- 13 类名.方法名进行访问 14 15 """ 16 """ 17 一个完整的类 18 class demo() 19 类属性 赋值语句定义 count = 0 访问方式 类名.count 20 初始化方法 def _init_ 访问方式 实例名.属性 21 实例方法 def fun_boject(self) 访问方式 实例名.方法 22 @classmethod 关键字 23 类方法(cls) 24 """ 25 26 class Tool(): 27 # 定义类属性 28 count = 0 29 # 定义类方法关键字 30 @classmethod 31 # 类方法的定义,第一个参数为cls类,哪个类调用就是那个类的引用 32 def c_method(cls): 33 # 类方法,内访问类属性.类名.类属性,(类名.类方法名) 34 print('这是类方法输出的类属性%s'% (Tool.count)) 35 def __init__(self,name): 36 self.name = name 37 # 修改类属性 38 Tool.count+=1 39 tool1 = Tool('斧头') 40 tool2 = Tool('榔头') 41 # 正确写法,类名.类属性 42 print(Tool.count) 43 # 错误写法 实例名.类属性. python的查找机制,先查找对象的count,找不到查找类的count,在找不到就报错 44 # 若对象的属性和类属性名称相同的情况下,容易产生混淆 45 print(tool2.count) 46 # 类体外访问类方法,类名.类方法名 47 Tool.c_method()
o2_静态方法.py
1 # Learner BM 2 """ 3 什么是静态方法, 例如 游戏帮助信息,与整个游戏 4 当一个类中,一个方法既不需要访问类属性,也不需要访问实例属性的时候,可以考虑定义成为静态方法 5 6 静态方法的定义 7 1,参数不需要self或者cls 8 2,使用关键字 @staticmethod 9 def 方法名( ) # 注意实例方法需要self,类方法需要cls 静态方法不需要指定参数 10 pass 11 静态方法的调用, 与类方法调用方式一致.但是只能在类外进行访问? 12 类名.静态方法名 13 """ 14 # 实际操作 15 class Game(): 16 # 定义类属性,记录游戏最高分 17 top_score = 0 18 # 定义类方法,显示游戏最高分 19 @classmethod 20 def show_top_score(cls): 21 print('类方法,显示游戏历史最高分%s' % cls.top_score) 22 # 定义静态方法,显示游戏帮助信息 23 @staticmethod 24 def show_help(): 25 print('游戏帮助信息,开始游戏输入....') 26 # 定义对象方法,开始游戏 27 def start_game(self): 28 print('游戏开始%s开始玩游戏了' % self.name) 29 # 定义对象初始化方法,初始化游戏玩家 30 def __init__(self,play_name): 31 self.name = play_name 32 # 创建实例 33 34 xiaoming = Game('小明') 35 36 # 调用静态方法,显示游戏帮助信息, 类名.静态方法名字 37 Game.show_help() 38 # 调用类方法,显示最高分,类名.类方法名 39 Game.show_top_score() 40 # 调用对象方法,开始游戏 对象名.方法名 41 xiaoming.start_game()

浙公网安备 33010602011771号