类与对象1
2019-04-11 10:36:35来源:博客园 阅读 ()
类是一个函数包,类中可以放置函数和变量。就像用 def 语句定义函数一样,用 class 语句来自定义一个类
1. 使用语法
在类中被定义的函数被称为类的【方法】,描述的是这个类能做什么。我们使用 Class.function() 的格式
在类中被定义的变量被称为类的【属性】,使用的 Class.var 格式
1 # 语法:创建一个名为“ClassName”的类,类名一般首字母要大写,(): 不能丢 2 class ClassName(): 3 # 如定义一个名为'狗'的类,可以写成class Dog(): 4 # 规范:class语句后续的代码块要缩进 5 def function1(): 6 print('报道!我是类A的第一个方法!') 7 # 定义类中的函数1 8 def function2(): 9 print('报道!我是类A的第二个方法!') 10 # 定义类中的函数2 11 var1 = 100 12 var2 = -5.83 13 var3 = 'abc' 14 15 ClassName.function1() 16 ClassName.function1() 17 #调用函数1、函数2 18 19 print(ClassName.var1) 20 print(ClassName.var2) 21 print(ClassName.var3)
终端输出:
报道!我是ClassName的第一个方法! 报道!我是ClassName的第二个方法!
也可在类的外面,使用 ClassName.var 的格式,增加或修改类的属性:
1 class ClassName(): 2 var1 = 100 3 var2 = -5.83 4 var3 = 'abc' 5 6 ClassName.var1 = 99 7 ClassName.var4 = '新增一个变量' 8 9 print(ClassName.var1) 10 print(ClassName.var4)
2. 类方法和类属性的组合
为了把类中的变量传递给类中的函数,我们需要用到3个特定格式:
若类中的函数【不需要】用到类中的变量时,就不要用这三处格式,否则终端也会给你报错。
3. 类方法同时使用内部参数和外部参数
(注意:当类方法同时使用多个外参数时,要多预设几个参数位置)
1 # 请直接运行并体验代码效果 2 class Class(): 3 var = 100 4 5 @classmethod 6 def function(cls,num1,num2,num3): 7 sum = cls.var + num1 + num2 + num3 8 print('加100函数计算结果如下:') 9 print(sum) 10 11 num1 = int(input('请输入一个整数:')) 12 num2 = int(input('请输入一个整数:')) 13 num3 = int(input('请输入一个整数:')) 14 15 Class.function(num1,num2,num3)
终端结果:
请输入一个整数:1000 请输入一个整数:2000 请输入一个整数:3000 加100函数计算结果如下: 6100
再举一个例子:
1 class poem(): 2 word = ['《卜算子》','我住长江头,','君住长江尾。','日日思君不见君,','共饮长江水。'] 3 4 @classmethod 5 def poem_function(cls,a): 6 print('念给'+ a +'的诗:') 7 for i in cls.word: 8 print(i) 9 10 poem.poem_function('张三')
终端输出:
念给张三的诗:
《卜算子》
我住长江头,
君住长江尾。
日日思君不见君,
共饮长江水。
4. 如何增加/修改类属性
4.1 从外部增加/修改属性
例如:做一个“幸运数翻倍”小程序,这个程序能接收外部输入的幸运数字,然后翻888倍打印出来。
1 class lunky(): 2 @classmethod 3 def fanbei(cls): 4 print('好的,我把它存了起来,然后翻了888倍还给你:' + str(cls.num*888)) 5 # 或者这样写也可以: 6 # print('好的,我把它存了起来,然后翻了888倍还给你:%d' % (cls.幸运数*888)) 7 8 lunky.num = int(input('你的幸运数是多少?请输入一个整数。')) 9 lunky.fanbei()
终端输出:
你的幸运数是多少?请输入一个整数。66
好的,我把它存了起来,然后翻了888倍还给你:58608
4.2 从内部增加/修改属性
格式如下:
1 class ClassName(): 2 @classmethod 3 def function(cls): 4 cls.var = input('请随意输入字符串:') 5 6 ClassName.function() 7 8 print('打印新增的类属性:') 9 print(ClassName.var)
举个例子:改良之前的例子,‘念给张三的诗‘
请输入你想给谁念诗:(用户输入“Jones'')
给Jones的诗
《卜算子》 我住长江头, 君住长江尾。 日日思君不见君, 共饮长江水。
1 class poem(): 2 word = ['《卜算子》','我住长江头,','君住长江尾。','日日思君不见君,','共饮长江水。'] 3 4 @classmethod 5 def poem_function(cls): 6 cls.name = input('请输入你想给谁念诗:') 7 print('给{}的诗'.format(cls.name)) 8 for i in cls.word: 9 print(i) 10 11 poem.poem_function()
终端输出:
请输入你想给谁念诗:Jones
念给Jones的诗:
《卜算子》
我住长江头,
君住长江尾。
日日思君不见君,
共饮长江水。
综合例子:
1.
①是调用类方法评级
,②是在评级内部调用了类方法计算平均分
,③④是类方法计算平均分
的过程,最后返回的值重新赋值给了评级
中的类属性平均分
。
2.员工管理系统
1 # 创建一个人事系统类 2 class hrSystem: 3 # 创建存储员工名字的变量 name 4 name = '' 5 # 创建存储员工工资的变量 salary 6 salary = 0 7 # 创建存储员工绩效的变量 kpi 8 kpi = 0 9 10 # 定义录入员工信息的类方法 11 @classmethod 12 def record(cls, name, salary, kpi): 13 cls.name = name 14 cls.salary = salary 15 cls.kpi = kpi 16 17 # 定义打印员工信息的类方法 18 @classmethod 19 def print_record(cls): 20 if check_name(): 21 print(cls.name + '的工作信息如下:') 22 print('本月工资:' + str(cls.salary)) 23 print('本年绩效:' + str(cls.kpi)) 24 25 # 定义根据 kpi 评奖的类方法 26 @classmethod 27 def kpi_reward(cls): 28 if cls.kpi > 95: 29 print('恭喜' + cls.name + '拿到明星员工奖杯!') 30 elif cls.kpi <= 95 and cls.kpi >= 80: 31 print('恭喜' + cls.name + '拿到优秀员工奖杯!') 32 else: 33 print('很遗憾' + cls.name + '这次没有评上奖杯,希望来年努力工作,勇创佳绩!') 34 35 # 请在下面填入你的代码,大约4行左右 36 @classmethod 37 def check_name(cls): 38 if cls.name in ['bob', 'candy', 'jony', 'kelly']: 39 print('录入正确!') 40 return 1 41 else: 42 print('录入错误!' + cls.name +'不是本公司员工!') 43 return 0 44 45 # 验证结果的代码 46 hrSystem.record('bob', 13000, 98) 47 hrSystem.print_record 48 hrSystem.check_name() 49 hrSystem.kpi_reward() 50 hrSystem.record('spy', 3000, 60) 51 hrSystem.check_name()
终端输出:
录入正确!
恭喜bob拿到明星员工奖杯!
录入错误!spy不是本公司员工!
可以在codelf网站查询英文取名:https://unbug.github.io/codelf/
原文链接:https://www.cnblogs.com/JonesLQ/p/10668708.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:了解Python控制流语句——continue 语句
下一篇:数据结构(一):链表
- fetchone函数和fetchall函数返回值的区别 2019-08-13
- Python之装饰器笔记 2019-08-13
- Python之对象持久化笔记 2019-08-13
- Python学习日记(九) 装饰器函数 2019-08-13
- python之函数、面向对象 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash