文档章节

类与对象1

o
 osc_gu9d45li
发布于 2019/04/08 16:03
字数 1516
阅读 0
收藏 0
def

「深度学习福利」大神带你进阶工程师,立即查看>>>

类是一个函数包,类中可以放置函数和变量。就像用 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/

 

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
浅入浅出Android(003):使用TextView类构造文本控件

基础: TextView是无法供编辑的。 当我们新建一个项目MyTextView时候,默认的布局(/res/layout/activity_main.xml)中已经有了一个TextView: <TextView 运行效果如下: 修改其文本内容...

樂天
2014/03/22
679
1
我的架构演化笔记 功能1: 基本的用户注册

“咚咚”,一阵急促的敲门声, 我从睡梦中惊醒,我靠,这才几点,谁这么早, 开门一看,原来我的小表弟放暑假了,来南京玩,顺便说跟我后面学习一个网站是怎么做出来的。 于是有了下面的一段...

强子哥哥
2014/05/31
976
3
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
研究虚拟机--Jikes RVM

Jikes研究虚拟机(Jikes Research Virtual Machine,简称Jikes RVM)是一种成熟的用于执行Java程序的虚拟机,其早期版本与当前版本分别在通用公共许可证(CPL)与Eclipse公共许可证(EPL)下开...

匿名
2013/02/13
1.1K
0
C++的JSON解析类--JSONVALUE

Jsonvalue 是 C++ 的 JSON 类,用来解析 JSON 到 C++ 对象,也可将对象转成 JSON 字符串。支持 ANSI 和 Unicode。特点: 严格和松散模式 不同数据类型 简单 API 仅依赖 STL 示例代码: JSON...

匿名
2013/03/10
3K
1

没有更多内容

加载失败,请刷新页面

加载更多

SQL 语句大全

点击上方“掌上编程”,选择“置顶或者星标” 优质文章第一时间送达! 一、基础 「1、说明:创建数据库」 CREATE DATABASE database-name    「2、说明:删除数据库」 drop database ...

GeneralMa
昨天
0
0
山东创睦网络科技有限公司:使用Python爬取全球新冠肺炎疫情数据

使用Python爬取全球新冠肺炎疫情数据 导入所需库包 获取实时数据的url 正式编写程序 查看输出结果 导入所需库包 在获取数据之前,我们需要先安装好所需的包requests和pandas: 1.如果是使用p...

osc_qv1fwke0
51分钟前
14
0
如何1年获得别人3年的工作经验(深度好文)

最近有同学问我,为什么你的工作年限不长,技术却这么厉害,我笑了笑,啥也没说。 我不是不想回答,是不知道怎么回答。在他们的定位可能就是,每方面都懂一点,遇到问题能够快速解决,就是比...

zhang_rick
今天
1
0
新基建带动行业

什么是“新基建”? 什么是“新基建”? 根据央视发布的信息来看,其涵盖了5G基站建设、新能源汽车充电桩、大数据中心、人工智能、工业互联网,特高压,城际以及城轨交通,涉及了七大领域和相...

osc_anefoz50
52分钟前
16
0
怕入错行?这群技术人写了本“择业指南”

计算机专业好找工作吗?哪些方向是当前的主流和热门方向呢? 计算机专业的你是不是还在为职业发展纠结犹豫呢? 刚经历完高考选专业的你是不是还在迷茫徘徊呢? 那么福利来啦! 《软件技术职业...

阿里云云栖号
52分钟前
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部