IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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.学生姓名 + '的评级是:差')

成绩单.录入成绩单()
成绩单.打印成绩单()
成绩单.打印平均分()
成绩单.评级()
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:28:10  更:2022-01-17 11:29:40 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码