Python学习之类和对象

【类】是一个函数包。类中可以放置函数和变量,类中的函数可以很方便的使用类中的变量。

在类中被定义的函数被称为类的【方法】,描述的是这个类能做什么。我们使用类名.函数名()的格式,就可以让类的方法运行起来。在类中被定义的变量被称为类的【属性】。使用类名.变量名的格式,可以把类中的属性的值提取出来。类的属性可以修改,使用类名.变量名的格式,可以让我们在类的外面,增加或修改类的属性。

类方法和类属性可以组合,需要用到@classmethod,中文意思是类方法。

class 类A():
    变量1 = 100
    变量2 = 200
    
    @classmethod
    def 函数1(cls):
        print(cls.变量1)
        print(cls.变量2)

类A.函数1()

为了把类中的变量传递给类中的函数,我们需要用到3个特定格式:

① 第一个格式@classmethod的中文意思就是“类方法”,@classmethod声明了函数1是类方法,这样才能允许函数1使用类属性中的数据。

② 第二个格式cls的意思是class的缩写。如果类方法函数1想使用类属性(也就是类中的变量),就要写上cls为函数1的第一个参数,也就是把这个类作为参数传给自己,这样就能被允许使用类中的数据。

③ 第三个格式是cls.变量。类方法想使用类属性的时候,需要在这些变量名称前加上cls

从【类的外部】增加/修改类属性

class 幸运():
    @classmethod
    def 好运翻倍(cls):
        print('好的,我把它存了起来,然后翻了888倍还给你:' + str(cls.幸运数*888))
        # 或者这样写也可以:
        # print('好的,我把它存了起来,然后翻了888倍还给你:%d' % (cls.幸运数*888))

幸运.幸运数 = int(input('你的幸运数是多少?请输入一个整数。'))
幸运.好运翻倍()

从类的内部增加/修改类属性

class 念诗类():
    一首诗 = ['《卜算子》','我住长江头,','君住长江尾。','日日思君不见君,','共饮长江水。']
    
    @classmethod
    def 念诗函数(cls):
        cls.姓名 = input('请输入你想给谁念诗:')
        print("念给"+cls.姓名+'的诗')
        for i in cls.一首诗:
            print(i)

念诗类.念诗函数()
class hrSystem:
    # 创建存储员工名字的变量 name
    name = ''
    # 创建存储员工工资的变量 salary
    salary = 0
    # 创建存储员工绩效的变量 kpi 
    kpi = 0

    # 定义录入员工信息的类方法
    @classmethod
    def record(cls, name, salary, kpi):
        cls.name = name
        cls.salary = salary
        cls.kpi = kpi

    # 定义打印员工信息的类方法
    @classmethod
    def print_record(cls):
        if cls.check_name():  # 以 cls.check_name() 的返回值(0或1)作为判断条件。
            print(cls.name + '的工作信息如下:')
            print('本月工资:' + str(cls.salary))
            print('本年绩效:' + str(cls.kpi))

    # 定义根据 kpi 评奖的类方法
    @classmethod
    def kpi_reward(cls):
        if cls.kpi > 95:
            print('恭喜' + cls.name + '拿到明星员工奖杯!')
        elif cls.kpi <= 95 and cls.kpi >= 80:
            print('恭喜' + cls.name + '拿到优秀员工奖杯!')
        else:
            print('很遗憾' + cls.name + '这次没有评上奖杯,希望来年努力工作,勇创佳绩!')
        
    # 检查录入名称是否正确的类方法
    @classmethod
    def check_name(cls):
        if cls.name not in ['bob', 'candy', 'jony', 'kelly']:
            print('录入错误!' + cls.name + '不是本公司员工!')
            return 0  # 设置返回值为0
        else:
            print('录入正确~')
            return 1  # 设置返回值为1

# 验证结果的代码
hrSystem.record('spy', 3000, 60)
hrSystem.print_record()

练习

class calendar:
    date = '2020-08-08'
    things = {'给父母买礼物':'9:00', '学习':'10:00', '和朋友聚会':'18:30'}

    @classmethod
    def thing_done(cls, thing):#已完成的事情删除
        del cls.things[thing]

    @classmethod
    def add_thing(cls, thing, time):#增加将做事项
        cls.things[thing] = time

calendar.thing_done('给父母买礼物')
calendar.add_thing('写日记', '20:00')
print(calendar.things)

猜你喜欢

转载自blog.csdn.net/qq_42458954/article/details/87342917