python小课-类与对象笔记

系统 582 0

类:

理解类最简单的方式:类是一个函数包,类中可以放置变量和函数,然后类中的函数可以很方便的调用变量。

使用class来定义一个类

            
              # 语法:创建一个名为“ClassName”的类,类名一般首字母要大写,(): 不能丢   
class ClassName():
# 如定义一个名为'狗'的类,可以写成class Dog():
    # 规范:class语句后续的代码块要缩进  
    def function1():
    # 定义类中的函数1
            
          

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

除了函数外,在类中还可以放置一堆变量,就像这样:

            
              class 类A():
    变量1 = 100
    变量2 = -5.83
    变量3 = 'abc'
            
          

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

不过类中的属性(变量)也不是不能改变,使用 类名.变量名 的格式,可以让我们在类的外面,增加或修改类的属性

class 类A():
    变量1 = 100
    变量2 = -5.83
    变量3 = 'abc'

类A.变量1 = 99
类A.变量4 = '新增一个变量'

print(类A.变量1)
print(类A.变量4)

看到这里,你可能会有有点疑惑,类方法也是函数,那和我们之前学的单独定义函数有什么区别吗?

它们两者最大的区别,一个是它的调用格式: 类.函数名() 函数名() 多了一个【类.】,但更重要的是,“类”中的函数可以利用“类”中的变量(也就是类方法可以调用类属性)。

python小课-类与对象笔记_第1张图片

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

 

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

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

 

这就好比 类方法 之间的约法三章,所以但凡有任何格式错误都会报错。

 

python小课-类与对象笔记_第2张图片

 

 

 

 

 

类与对象

类是对象的模板

类的实例化:

直接使用类:

python小课-类与对象笔记_第3张图片

 

实例化后使用类:

python小课-类与对象笔记_第4张图片

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

            # 直接使用类
class 成绩单():
    @classmethod
    def 录入成绩单(cls):
        cls.学生姓名 = input('请输入学生姓名:')
        cls.语文_成绩 = int(input('请输入语文成绩:'))
        cls.数学_成绩 = int(input('请输入数学成绩:'))

    @classmethod
    def 打印成绩单(cls):
        print(cls.学生姓名 + '的成绩单如下:')
        print('语文成绩:'+ str(cls.语文_成绩))
        print('数学成绩:'+ str(cls.数学_成绩))

成绩单.录入成绩单()
成绩单.打印成绩单()

# 实例化之后
class 成绩单():   # ①不用再写@classmethod
    def 录入成绩单(self):  # ②cls变成self
        self.学生姓名 = input('请输入学生姓名:')  # ③cls.变成self.
        self.语文_成绩 = int(input('请输入语文成绩:'))
        self.数学_成绩 = int(input('请输入数学成绩:'))

    def 打印成绩单(self):
        print(self.学生姓名 + '的成绩单如下:')
        print('语文成绩:'+ str(self.语文_成绩))
        print('数学成绩:'+ str(self.数学_成绩))


成绩单1 = 成绩单() # ④创建实例对象:成绩单1

成绩单1.录入成绩单() # ⑤实例化后使用
成绩单1.打印成绩单()
          

当我们完成实例化后,对应于一个实例的属性和方法,叫“实例属性、实例方法”,不再称为“类属性、类方法”:

 

类和实例的关系,就像母体和复制品的关系一样。当一个类实例化为多个实例后,实例将原封不动的获得类属性,也就是 实例属性 类属性 完全相等。

我们可以修改类属性,这会导致所有实例属性变化(因为类是模板)

我们也可以修改实例属性,但这不会影响到其他实例,也不会影响到类。因为 每个实例都是独立的个体

新增也是一样的道理,在类中新增属性会影响到实例,但在实例中新增属性只影响这个实例自己

 

和类属性一样,我们可以重写类方法,这会导致所有实例方法自动被重写

“重写类方法”分成两个步骤:第一个步骤是在类的外部写一个函数,第二个步骤是把这个新函数的名字赋值给 类.原始函数

python小课-类与对象笔记_第5张图片

 

要注意的是,这里的赋值是在替换方法,并不是调用函数,所以【不要加上括号】—— 写成 类.原始函数() = 新函数() 是错误的。

 

我们可以通过重写类方法,让实例方法发生变化,但我们不能重写实例方法,模板给的技能不是说换就能换的。

 

初始化函数:

初始化函数 的意思是,当你创建一个实例的时候,这个函数就会被调用。上面的代码在执行 实例 = 类() 的语句时,就自动调用了 __init__(self) 函数。

 

初始化函数 的写法是固定的格式:中间是“init”,这个单词的中文意思是“初始化”,然后前后都要有【两个下划线】,然后 __init__() 的括号中,第一个参数一定要写上 self ,不然会报错。

 

            class 成绩单():
    def __init__(self,学生姓名,语文_成绩,数学_成绩):
        self.学生姓名 = 学生姓名
        self.语文_成绩 = 语文_成绩
        self.数学_成绩 = 数学_成绩

    def 打印成绩单(self):
        print(self.学生姓名 + '的成绩单如下:')
        print('语文成绩:'+ str(self.语文_成绩))
        print('数学成绩:'+ str(self.数学_成绩))


成绩单1 = 成绩单('张三',99,88)
成绩单2 = 成绩单('李四',64,73)
成绩单3 = 成绩单('王五',33,22)

成绩单1.打印成绩单()
成绩单2.打印成绩单()
成绩单3.打印成绩单()
          

继承

 

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论