| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> python中的“类” -> 正文阅读 |
|
[Python知识库]python中的“类” |
1.什么是类? 【类】是一个函数包。类中可以放置函数和变量,然后类中的函数可以很方便的使用类中的变量。 ①定义 类 就想我们用def语句来定义函数一样,我们用class来定义一个类。如: # 语法:创建一个名为“ClassName”的类,类名一般首字母要大写,(): 不能丢 class ClassName(): ????# 定义一个变量 ????num = 100 # 如定义一个名为'狗'的类,可以写成class Dog(): # 规范:class语句后续的代码块要缩进 def function1(): # 定义类中的函数1 ②方法和属性 【方法】在类中定义的函数,调用格式:类.函数() 【属性】在类中定义的变量,调用格式:类.变量 2.类方法和类属性的组合使用 ①将类中的变量传给类中的函数 为了把类中的变量传递给类中的函数,我们需要用到3个特定格式: 【1】第一个格式@classmethod的中文意思就是“类方法”,@classmethod声明了函数1是类方法,这样才能允许函数1使用类属性中的数据。 【2】第二个格式cls的意思是class的缩写。如果类方法函数1想使用类属性(也就是类中的变量),就要写上cls为函数1的第一个参数,也就是把这个类作为参数传给自己,这样就能被允许使用类中的数据。 【3】第三个格式是cls.变量。类方法想使用类属性的时候,需要在这些变量名称前加上cls.。 这就好比类方法和类之间的约法三章,所以但凡有任何格式错误都会报错。 ?另外,当类中的函数【不需要】用到类中的变量时,就不要用@classmethod、cls、cls.三处格式,否则就是占着茅坑不拉屎,终端也会给你报错。(没错,就是这么傲娇~)以下是正确的示例: class 类A(): 变量1 = 100 变量2 = 200 def 函数1(): # 【不需要】使用类属性 print('我不需要使用类属性。') @classmethod def 函数2(cls): # 【需要】使用类属性 print(cls.变量1) print(cls.变量2) 类A.函数1() 类A.函数2() ?3.给类方法传参 ①类方法使用外部参数 一首诗 = ['《卜算子》','我住长江头,','君住长江尾。','日日思君不见君,','共饮长江水。'] class 念诗类(): def 念诗函数(参数): for i in 参数: print(i) 念诗类.念诗函数(一首诗) ②类方法使用内部参数 class 念诗类(): 一首诗 = ['《卜算子》', '我住长江头,', '君住长江尾。', '日日思君不见君,', '共饮长江水。'] @classmethod def 念诗函数(cls): for i in cls.一首诗: print(i) 念诗类.念诗函数() ③类方法同时使用内部参数和外部参数 class 念诗类(): 一首诗 = ['《卜算子》', '我住长江头,', '君住长江尾。', '日日思君不见君,', '共饮长江水。'] @classmethod def 念诗函数(cls,参数): print('念给%s的诗:'%参数) for i in cls.一首诗: print(i) 念诗类.念诗函数('张三') 4.增加/修改类属性 有两种途径来增加或修改类属性。一种是从外部:用类.变量 = xx直接增加/修改类属性;一种是从内部:用类方法去增加/修改; ①从外部增加/修改类属性 示例一: 变量1 = 15 #这是类外部的变量1 变量2 = 'abc' class 类A(): 变量1 = 100 #这是类属性变量1 变量1 = 类A.变量1 类A.变量2 = 变量2 #从外部增加/修改类属性 print(类A.变量1) print(类A.变量2) 示例一运行结果:依次打印出100和abc 我们要区分两个变量,虽然名字相同,但是类外部的【变量1】和类属性【变量1】是两个不同的变量。变量1 = 类A.变量1是把类属性100重新赋值给了类外部的变量1,类属性变量1的值没有改变,还是100。 而类A.变量2 = 变量2,是为类A增加了一个类属性变量2,它的值等于外部的变量2也就是abc。 示例二: class 类(): @classmethod def 打印类属性(cls): print(cls.变量) 类.变量 = input('请输入字符串:') #从外部增加/修改类属性 类.打印类属性() 这段代码先利用input函数从外部接收了一个字符串,并通过赋值的方式保存为了类属性类.变量。然后利用类方法类.打印类属性()打印出了这个外部输入的字符串。 ②从内部增加/修改类属性 class 念诗类(): 一首诗 = ['《卜算子》', '我住长江头,', '君住长江尾。', '日日思君不见君,', '共饮长江水。'] @classmethod def 念诗函数(cls): cls.接收人 = input('请输入你想给谁念诗:') #从内部增加/修改类属性 print('念给' + cls.接收人 + '的诗:') for i in cls.一首诗: print(i) 念诗类.念诗函数() 5.完整项目示例: class 成绩单(): @classmethod def 录入成绩单(cls): cls.学生姓名 = input('请输入学生姓名:') cls.语文_成绩 = int(input('请输入语文成绩:')) cls.数学_成绩 = int(input('请输入数学成绩:')) @classmethod def 打印成绩单(cls): print(cls.学生姓名 + '的成绩单如下:') print('语文成绩:'+ str(cls.语文_成绩)) print('数学成绩:'+ str(cls.数学_成绩)) @classmethod def 打印平均分(cls): 平均分 = (cls.语文_成绩 + cls.数学_成绩)/2 print(cls.学生姓名 + '的平均分是:' + str(平均分)) @classmethod def 评级(cls): 平均分 = (cls.语文_成绩 + cls.数学_成绩)/2 if 平均分>=90: print(cls.学生姓名 + '的评级是:优') elif 平均分>= 80 and 平均分<90 : print(cls.学生姓名 + '的评级是:良') elif 平均分>= 60 and 平均分<80 : print(cls.学生姓名 + '的评级是:中') else: print(cls.学生姓名 + '的评级是:差') 成绩单.录入成绩单() 成绩单.打印成绩单() 成绩单.打印平均分() 成绩单.评级() |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:53:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |