Python—面向对象
2021-06-21 11:06
标签:根据 封装 python sel style elf 案例 game with ####python的面向对象### 1.面向对象的三个特征:封装,继承,多态 2.多态:不同的子类对象调用相同的方法,产生不同的执行结果 示例: class Dog(object): def __init__(self,name): self.name = name def game(self): print ‘%s蹦蹦跳跳的玩‘%self.name class xiaotiandog(Dog): def game(self): print ‘%s飞到天上玩‘%self.name class Person(object): def __init__(self,name): self.name = name def game_with_dog(self,dog): print ‘%s和%s快乐的玩耍‘%(self.name,dog.name) dog.game() ##调用相同的方法,产生的结果不同 #wangcai = Dog(‘旺财‘) wangcai = xiaotiandog(‘旺财‘) ##这两个不同的对象 xm = Person(‘小明‘) xm.game_with_dog(wangcai) """ 案例小结: Person类中只需要让狗调用game方法(这就是子类的父类中封装的方法),而不关心具体是什么狗 game方法是在Dog父类中定义的 在程序执行时,传入不同的狗对象的实参,就会产生不同的执行效果 """ 3.面向对象三大特征: (1).封装:根据职责将属性和方法封装到一个抽象的类中 (2).继承:实现了代码的复用,相同的代码不需要重复的编写 (3).多态:(以继承和封装为前提),不同的子类对象调用相同的方法,产生不同的执行结果 示例: 人类: work方法: 程序员 设计师 不同的对象,调用相同的方法,会产生不同的结果 """ 4.类属性:类属性就是针对类对象定义的,通过赋值语句在class关键字下可以定义类属性,类属性用于记录与这个类相关的特征。 在python中,一切皆对象 类是一个特殊的对象————类对象 在程序运行的时候,类对象(创建实例对象的模板) 在内存中只有一份,通过它可以创建出很多个对象实例 除了封装实例的属性和方法外,类对象还可以拥有自己的属性和方法 (1)类属性 (2)类方法 通过 类名. 的方式可以直接访问类的属性 类属性:就是给类对象定义的属性 通常用来记录与这个类相关的特征 类属性不会用来记录具体的对象特征 示例: class Toy(object): #通过赋值语句定义类属性,记录所有玩具的数量 count = 0 def __init__(self,name): self.name = name #让类属性加1 类属性的调用方法 类名.类属性或者类方法 Toy.count += 1 #创建工具对象 tool1 = Toy(‘斧头‘) tool2 = Toy(‘榔头‘) print Toy.count ##类属性的调用方法 类名.类属性或者类方法 5.类方法:类方法就是针对类对象定义的方法,在类方法内部就可以直接访问类属性或者调用其他类方法。 示例: class Toy(object): #使用赋值语句定义类属性,记录所有玩具的数量 count = 0 @classmethod ##这个就是类方法 def show_toy_count(cls): #cls.count 就是在类方法内部,访问当前的类属性 print ‘玩具对象的数量:%d‘%cls.count def __init__(self,name): self.name = name Toy.count += 1 tool1 = Toy(‘乐高‘) tool2 = Toy(‘玩具熊‘) Toy.show_toy_count() 6.静态方法: 在开发的时候,如果需要在类中封装一个方法,这个方法 既不需要访问实例属性或者调用实例方法, 也不需要访问类属性或者调用类方法 这个时候,我们就可以把这个方法封装成一个静态方法 示例: class Cat(object): #不访问实例属性/类属性 @staticmethod def call(): print ‘喵喵~‘ #通过 类名. 调用静态方法 #不需要创建对象,就可以直接使用 Cat.call() 7.类的结构 术语--实例 1.使用面向对象开发,第一步就是设计类 2.使用 类名() 创建对象,创建对象的动作有两步 1.在内存中为对象分配空间 2.调用初始化方法__init__为对象初始化 3.对象创建后,内存中就有了一个对象的实实在在的存在--实例 因此: 1.创建出来的对象叫做类的实例 2.创建对象的动作叫做实例化 3.对象的属性叫做实例属性 4.对象调用的方法叫做实例方法 在程序执行时: 1.对象各自拥有自己的实例属性 2.调用对象的方法,可以通过self 访问自己的属性 调用自己的方法 8.练习 (1).设计一个Game类 (2).属性 定义一个属性top_score记录游戏的历史最高分(类属性) 定义一个属性player_name记录当前游戏玩家的姓名(实例属性) (3).方法: show_help显示游戏的帮助信息(静态方法) show_top_score显示历史最高分(类方法,访问类属性) start_game开始当前玩家的游戏(实例方法) 代码: class Game(object): top_score = 0 @classmethod def show_top_score(cls): print ‘历史最高分数是:%d‘%cls.top_score #实例属性在初始化方法内部定义 def __init__(self,player_name): self.name = player_name def start_game(self): print ‘%s开始游戏‘%self.name @staticmethod def show_help(): print ‘帮助信息‘ #查看帮助信息 Game.show_help() #查看历史最高分数 Game.show_top_score() #创建游戏对象,开始游戏 xm = Game(‘小明‘) xm.start_game() """ 案例小结: 1.实例方法--方法内部需要访问实例属性 实例方法内部可以使用 类名.访问类属性 2.类方法:方法内部‘只’需要访问类属性 3.静态方法:方法内部,不需要访问实例属性和类属性 提问: 如果方法内部 即需要访问实例属性,又需要访问类属性,应该定义什么方法? 答案: 应该定义实例方法 因为,类只有一个,在实例方法内部可以使用类名,访问类属性 """ Python—面向对象 标签:根据 封装 python sel style elf 案例 game with 原文地址:https://www.cnblogs.com/wf-aiyouwei/p/9683878.html