Python中的类

参考:

https://turingplanet.org/2019/09/21/%e7%b1%bb-class/#lei_he_shi_li_Class_Instance

书《深度学习之Pytorch实战计算机视觉》

什么是“类”?

是用来描述具有相同属性和方法的对象的集合,定义了该集合中每个对象所共有的属性和方法,对象则是类的实例;

每个类都有自己的属性(attribute)(如:一个人的身高、体重、年龄)和方法(method)(如:吃饭、说话、刷牙)

注意:class(类)的外部函数叫做函数function的内部函数叫做方法method

一、类的创建

1、类 class 的创建及演示

说明:

Python中使用class关键词来创建“类”,在class关键词之后紧接着类的名称,名称首字母推荐大写,以冒号结尾,换行缩进后紧跟“属性”和“方法”的定义,属性就是一个变量的定义,而方法的定义和函数的定义是一样的,也是以def开头;

 

在类的创建过程中需要注意的如下事项:

  1. 类变量:在创建的类中会定义一些变量,我们把这些变量叫作类变量,类变量的值在这个类的所有实例之间是共享的,同时内部类或者外部类也能对这个变量的值进行访问。
  2. __init__():是类的初始化方法,我们在创建一个类的实例时 就会调用一次这个方法。
  3. self:代表类的实例,在定义类的方法时是必须要有的,但是在调用时不必传入参数。

演示:

image.png

类的定义是一个具体实例(instance)的设计蓝图,在创建实例的时候,我们只要调用类名,然后加括号就可以了。在方法——greet中,我们使用了特殊参数self,它永远指向创建的实例本身,所以self.name就会指向当前被创建实例的name属性。p1.greet()是方法调用的示范,我们只要在实例名后加上句号(.)紧跟着方法名,即可调用实例的方法。

2、类 class 的修改及演示

修改:

我们也可以在创建实例之后,对其属性和方法进行修改:

# 修改对象属性值
p1.age = 40

# 删除对象属性值
del p1.age

# 删除对象
del p1

演示:

1、修改对象属性值

image.png

2、删除对象属性值

image.png

3、类 class 的初始化

初始化:

__init__ 是 Python 中的特殊“方法”(special method),它用于初始化对象;

创建实例时它是最先被调用的函数,并且每次创建实例,它的__init__都会被调用,而且它的第一个参数永远是 self,指向创建的实例本身。(init是initial的简写,顾名思义就是用来初始化的)

演示:

image.png

也可以在__init__方法中添加其他参数,这样我们的的初始化能更加灵活和方便,同时在创建实例的时候,需要传入与__init__方法匹配的参数:(下面例子中从S1S2就是初始化的过程)

image.png

二、类的继承

1、继承

说明:

可以将继承理解为:在面向对象编程中,已经创建了一个类,又想再创建一个与之相似的新的类(比如添加几个方法,或者修改原来的方法;这时不必从头开始,可从原来的类派生出一个新的类,即新的类继承了原来的类),通过继承,新的类获得另一个类的所有方法,被继承的类叫作父类,进行继承的类叫作子类,子类继承了父类的所有数据和方法。(颜色相同,属性相同)

这样可以有效解决代码重用问题

需要注意:(这里没太看明白)

  • 当一个类被继承时,这个类中的类初始化方法不会被自动调用,所以需要在子类中重新定义类的初始化方法;
  • 使用 Python代码调用某个“方法”时,默认先在所在的类中进行查找,如果没有找到,则判断所在的类是否为子类,如果为子类,就继续到父类中查找。

 

演示:

父类演示:

image.png

加入子类:

image.png

下面是第二种程序方法,供参考:

定义父类:

image.png

加入子类:

image.png

2、多态

说明:

多态是指对不同类型的参数进行相同的操作,根据对象(或类)类型的不同而表现出不同的行为;

继承可以拿到父类的所有数据和方法,子类可以重写父类的方法,也可以新增自己特有的方法(有了继承,才有了多态,这样才能实现为不同的数据类型的实体提供统一的接口)。

演示:

image.png

三、类的重写

说明:

在继承一个类之后,父类中的很多方法或许就不能满足我们现有的需求了,这时就要对类进行重写;

演示:

image.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 11
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值