[python]-类与对象-上

 

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

1、类的定义

2、类中方法的调用

在类中被定义的函数被称为类的【方法】,描述的是这个类能做什么。我们使用类名.函数名()的格式,就可以让类的方法运行起来。

3、类中变量的调用

在类中被定义的变量被称为类的【属性】。使用类名.变量名的格式,可以把类中的属性的值提取出来

4、类中变量新增和修改

有两种途径来修改或者新增类属性

第一种方法 从内部,用类方法去修改或者新增,另一种从外部,用类.变量名=xx,直接新增或者修改类属性

1)从外部增加/修改属性

类A()是一个空类(里面的pass语句代表“什么都不做”),利用类A.变量1,我们在外部给类A()添加了一个类属性变量1,然后使用print语句把类属性打印了出来。

 案例2:

先利用input函数从外部接收了一个字符串,并通过赋值的方式保存为了类属性类.变量。然后利用类方法类.打印类属性()打印出了这个外部输入的字符串。

2)从内部增加/修改属性

类.增加并打印类属性()接收外部输入的字符串,然后新增为类属性。

5、类的使用举例

6、类变量和类方法

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

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

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

另外,当类中的函数【不需要】用到类中的变量时,就不要用@classmethodclscls.三处格式,否则就是占着茅坑不拉屎,终端也会给你报错。(没错,就是这么傲娇~)

正确的案例

 7、类方法同时使用内部参数和外部参数

 8、类方法调用其他类方法

 综合题目练习

1、录入员工信息,如果姓名不正确给出提示

2、打印学生信息

3、根据员工的kpi给出评绩

# 创建一个人事系统类
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()

posted @ 2019-03-31 19:25  一朵盛开的腊梅花  阅读(245)  评论(0编辑  收藏  举报