python基础语法04 |
您所在的位置:网站首页 › 所有水果类 › python基础语法04 |
一、面向对象
1、类
类是一系列事件的统称,同类事物必定具有相同的特征。 (1)特征 状态(品种,重量等)/变量(成员变量) (2)类的定义 定义格式一: class 类名: pass 定义格式二: class 类名: 成员 class Cat: pass (3)创建对象 格式: 变量名 = 类名() cat1 = Cat() 2、类成员成员变量 (1)定义格式一: class 类名: def __init__(self): self.变量名1 = 值1 self.变量名2 = 值2 self.变量名3 = 值3 调用格式: 取值:对象名.变量名 赋值:对象名.变量名 = 值 (2)定义格式二: 对象.变量名 = 值 调用格式: 取值:对象名.变量名 赋值:对象名.变量名 = 值 注意: 格式二声明变量: 如果变量名不存在视为定义变量 如果变量名存在视为调用变量 (3)总结 两种变量定义的区别: 1、在类定义中声明的变量为公有变量/公有属性,每个对象均存在此变量对应的属性 2、在创建对象后声明的变量为独有变量/独有属性,仅当前对象存在此变量对应的属性 例子: class Cat: def __init__(self): self.type = "波斯猫" self.name = None cat1 = Cat() print(cat1.type) cat1.name = "大帅" print(cat1.name) #给cat1穿衣服 cat1.cloth = "red" print(cat1.cloth)3、类的成员方法 (1)定义格式一: class 类名: def 方法名(self): 方法体 调用格式一: 对象名.方法名() 注意: self仅在声明时占位,无需传递具体参数 (2)定义格式二: class 类名: def 方法名(self,形参1,形参2...): 方法体 调用格式二: 对象名.方法名(实参1,实参2...) 例子: def eat(self): print("猫吃鱼") def climb(self, meter): print("猫会爬树,爬了%d米" % meter)4、__init__方法 __init__方法在创建对象时被执行,无需手工调用即可执行 对于程序中声明、定义的方法在特定时机自动执行的方法,称为魔术方法 5、__str__方法 __str__方法在使用print函数打印输出对象到屏幕时被执行,无需手工调用即可执行。该方法也属于魔术方法 __str__()格式: def __str__(self): return 打印对象时显示的信息 二、成员方法条用成员 1、成员方法调用成员变量 公有变量:直接访问,通过self进行 独有变量:访问要慎重,跨对象要重定义 例子: class Cat: def __init__(self): # 公有变量 self.type = "波斯猫" self.name = None def introduce(self): print("我是一只%s,我叫%s,我是%s色的" %(self.type,self.name,self.color)) cat1 = Cat() cat1.name = "大帅" # 独有变量 cat1.color = "red" cat1.introduce() cat2 = Cat() cat2.name = "小帅" #cat2.introduce()#第二个对象访问第一个对象的私有变量,会报错2、成员方法调用成员方法 直接用self.方法()来调用 例子: class Phone: def __init__(self): self.power = 100 def game(self): '''打游戏''' if self.power < 10: print("当前电量不足以打游戏,打游戏操作提前终止") else: print("正在打游戏,耗电10") self.power -= 10 def music(self): if self.power < 5: print("当前电量不足以打听歌,听歌操作提前终止") else: print("正在听歌,耗电5") self.power -= 5 def call(self): if self.power < 4: print("当前电量不足以打电话,打电话操作提前终止") else: print("正在打电话,耗电4") self.power -= 4 def answer(self): if self.power < 3: print("当前电量不足以接电话,接电话操作提前终止") else: print("正在接电话,耗电3") self.power -= 3 def charge(self, num): if self.power + num > 100: self.power = 100 print("充电操作提前结束,当前电量%d" % self.power) else: print("正在充电,充电量是%d" % num) self.power += num def __str__(self): return "当前电量%d" % self.power p = Phone() p.game() p.game() p.game() p.game() p.game() p.game() p.game() p.game() p.game() p.game() p.music() p.answer() print(p) p.charge(5) print(p) p.charge(100) p.music() p.music() p.music() print(p) p.charge(10) print(p) ---------------------------------------------------正在打游戏,耗电10 正在打游戏,耗电10 正在打游戏,耗电10 正在打游戏,耗电10 正在打游戏,耗电10 正在打游戏,耗电10 正在打游戏,耗电10 正在打游戏,耗电10 正在打游戏,耗电10 正在打游戏,耗电10 当前电量不足以打听歌,听歌操作提前终止 当前电量不足以接电话,接电话操作提前终止 当前电量0 正在充电,充电量是5 当前电量5 充电操作提前结束,当前电量100 正在听歌,耗电5 正在听歌,耗电5 正在听歌,耗电5 当前电量85 正在充电,充电量是10 当前电量95 三、封装 1、私有对成员私有化可以有效的保护从类的外部对类的内部成员进行访问 (1)私有属性定义格式 self.__属性名 = 值 (2)私有方法定义格式 delf __方法名(self): 方法体 2、封装封装操作可以对受访问保护的成员进行功能开放的控制,达到保护数据不被非法访问的目的 3、封装的标准格式(1)对受保护的变量进行私有设置 self.__变量名 = 值 (2)提供对外访问器 访问器(get方法) def get_变量名(self): return __变量名 (3)修改器(set方法) def set_变量名(self,形参): self.__变量名 = 形参 (4)封装案例 class Cat: def __init__(self): self.__type = "波斯猫" self.__name = None def get_type(self): return self.__type def set_type(self,type): self.__type = type def get_name(self): return self.__name def set_name(self,name): self.__name = name cat1 = Cat() cat1.set_name("大帅") print(cat1.get_name())4、init(构造方法)自定义参数 为了方便私有属性get和set,因此可以在init自定义参数,这样在对象创建的时候就可以给私有属性赋值。 def __init__(self,形参1,形参2): self.__属性名1 = 形参1 self.__属性名2 = 形参2 五、作业 【代码题】 定义一个水果类,然后通过水果类,创建苹果对象、橘子对象、西瓜对象并分别添加属性:颜色和价格 # 定义一个水果类,然后通过水果类,创建苹果对象、橘子对象、西瓜对象并分别添加属性:颜色和价格 class fruit: def __init__(self,color,price): self.color = color self.price = price apple = fruit("red",24) print("苹果是%s的,价格是%d元一斤" %(apple.color,apple.price)) orange = fruit("orange",25) print("橘子是%s的,价格是%d元一斤" %(orange.color,orange.price)) watermelon = fruit("green",30) print("西瓜是%s的,价格是%d元一斤" %(watermelon.color,watermelon.price))【代码题】 定义一个电脑类,电脑有品牌,有价格,能放电影。分别创建2个对象"联想电脑" 和 "苹果电脑"。调用放电影的动作,联想电脑播放 电影"葫芦娃",苹果电脑播放"黑猫警长"。 class Computer: def __init__(self,type,price): self.type = type self.price = price def moived(self,moive): print("我可以播放%s电影" % moive) com1 = Computer("联想电脑",10000) print("我是%s,我的价格是%d元" %(com1.type,com1.price)) com1.moived("葫芦娃") com1 = Computer("苹果电脑",12000) print("我是%s,我的价格是%d元" %(com1.type,com1.price)) com1.moived("黑猫警长")
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |