Python----类和面向对象
# 驼峰命名法
class Call_Phone():
# 类当中的函数叫类方法,类下面添加函数时会自动添加self.self代表类的实例
# 类的方法必须有一个额外的参数,惯例为self,后面跟其他参数
def call_tel(self, name):
print(f"{name}正在打电话")
# 变量名等于类名,创建对象
phone = Call_Phone()
# 执行类里面的方法,括号内的参数是给name传参
phone.call_tel("Cc")
- 添加和获取对象的属性,属性既是特征
- 对象属性可以再类外面添加和获取,也能在类里面添加和获取,一般都在里面添加
class Phone():
# 添加类属性
color = "red"
height = 10
width = 5
def sell_phone(self):
# 在类的方法里使用类的属性需要加self
print(f"手机的颜色是{self.color},高度是{self.height},宽度是{self.width}")
telephone = Phone()
telephone.sell_phone()
- 魔术方法
- 在Python中 __xx__()的函数叫魔术方法,指的是具有特殊功能的函数
- __init__():初始化对象
- 示例给类传参
class My_Name(): # 类属性,必须直接赋予参数,不能传参 name = "坤哥"
# 类执行时,魔术方法会默认执行 def __init__(self, age, work): # 类的实例属性,可以传参 # self.name = name self.age = age self.work = work # 直接定义,不传参也可以 self.love = "篮球" def jige(self): print(f"大家好,我是{self.name},今年{self.age}岁了,我是俩年半的{self.work},喜欢{self.love}") # 给类传参 demo = My_Name("38", "练习生") demo.jige()
# 大家好,我是坤哥,今年38岁了,我是俩年半的练习生,喜欢篮球
- 示例给类传参
- __str__()
- 当使用print输出对象时,默认打印对象的内存地址。
如果类定义了str方法,那就会打印从这个方法中return的数据。
class My_Name():
# 类属性,必须直接赋予参数,不能传参
name = "坤哥"
# 类执行时,魔术方法默认执行,__init__给类传参
def __init__(self, age, work):
# 类的实例属性,可以传参
# self.name = name
self.age = age
self.work = work
# 直接定义,不传参也可以
self.love = "篮球"
def jige(self):
print(f"这是类的方法")
def play_game(self):
# 类的方法里可以有返回值
return "我喜欢打游戏"
def __str__(self):
# 类的返回值
return f"大家好,我是{self.name},今年{self.age}岁了,我是俩年半的{self.work},喜欢{self.love}"
# 给类传参
demo = My_Name("38", "练习生")
# 在方法里有单独返回值,和函数写法一样
print(demo.play_game())
print(demo)
- 类的私有属性及私有方法
__priva_attrs:两个下划线开头,声明该属性为私有,不能在类的外部使用或访问。
class My_Text():
name = "张三"
# 私有属性
__id = 10086
# 类的方法内可以使用类的私有属性
def play_game(self):
print(f"{self.name}正在玩游戏,{self.__id}")
# 类的私有方法
def __call_tel(self):
print("正在打电话")
if __name__ == '__main__':
demo = My_Text()
print(demo.name)
demo.play_game()
# print(demo.__id) 不能被成功打印,报错
# demo.__call_tell不能被成功输出印,报错
- 综合应用-烤肉
肉的初始属性:
--烤的时间
--肉的状态
--添加的调料
烤肉的方法:
烤肉:
--根据意愿设定烤的时间
--判断烤的时间,修改烤肉状态
添加调料:
--设定添加的调料
--将添加的调料存储
显示对象信息
需求:
1.备考的时间对应的烤肉状态:
0--2分钟:生的
2--4分钟:半生不熟
5--6分钟:烤熟了
超过6分钟:烤糊了
2.添加调料
3.输出信息
class Roast_Meat():
def __init__(self):
# 肉的初始状态
self.meat_time = 0
self.meat_state = ""
self.meat_seasoning = []
def barbecue(self, time):
self.meat_time += time
if self.meat_time <= 2:
self.meat_state = "肉还是生的"
if 2 < self.meat_time <= 4:
self.meat_state = "肉还不熟"
if 4 < self.meat_time <= 6:
self.meat_state = "肉熟了可以吃了"
if self.meat_time > 6:
self.meat_state = "肉烤糊了"
def add_seasoning(self, *seasoning):
self.meat_seasoning.append(seasoning)
def __str__(self):
return f"肉已经烤了{self.meat_time}分钟,{self.meat_state},添加了{self.meat_seasoning}"
if __name__ == '__main__':
meat = Roast_Meat()
time = int(input("请输入烤的时间:"))
meat.barbecue(time)
meat.add_seasoning("盐,辣椒面,孜然")
print(meat)
练习:
以面向对象的方式修改存取钱函数

浙公网安备 33010602011771号