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号
浙公网安备 33010602011771号