学习
实践
活动
工具
TVP
写文章

AI学习笔记之Python回顾(一)类

不久之前遇到生成器的问题,我发现有些Python知识很久不用都忘了,并且最近学习人工智能也会用到Python。所以我打算用一周的时间来回顾重点,温故知新,今天复习的部分是

NO.1 对象(object)与类(class)

对象:对于面向对象编程来说,我们可以把任何现实存在符合逻辑的物体看作对象。

类:在Python中我们可以用类来表达一个对象,类可以用来表示有相同的属性和方法的对象的集合。

为什么使用对象?

1.使用对象可以让我们更好的设计和组织代码,更好的封装/划分

2.减少重复的代码,提升可读性和可管理性

上面的段落很抽象,容易让人产生迷惑。我们可以来举个例子:我们把车看成一个对象,在平时生活中,我们不需要知道车内的构造,只需要知道怎么开就好。在代码中,预先存在一个车的类,我们不需要知道类的变量和方法是如何实现的,我们只需要调用他们就好,这就有了良好的封装性。并且我们如果在代码中需要编写奔驰与宝马,我们已经有了一个车的类,奔驰与宝马都属于车,所以只需要调用车的类,不需要重新写奔驰与宝马的代码,这样就大大减少了我们的工作量,而且还是代码更加简洁,提升可读性与可管理性

NO.2 如何编写类(class)

类拥有类的变量(attributes)方法(Methods)

变量为对象所具有的属性,方法为对象的行为

例:一个车的类Class Car

变量为车的品牌与价格,方法为更换车的发动机

上图表达的是如何定义一个类,注意事项如下:

定义一个类,我们首先要书写类的名字,注意类的名字首字母要大写。例:车的类,class Car。

__init__(self...) 方法是类的初始化方法,也就是说没创建一个类的实例时,都会调用该方法创建该实例的变量属性。

“self”代表的是该类的本身,我们在定义方法的时候必须有它(表示创建实例类的本身),不过在调用时我们不用传入相应参数(python自动传入)。

例:创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2),这个过程中,Python会自动转为Myclass.mehod(MyObject,arg1,arg2)

instance1 = ClassName(123, 'hello') 也就是传入相应参数并由__init__(self...) 方法接受,创建一个新的实例。

我们可以使用点号(.)访问类中的属性和方法。例: Car.attribute1Car为该类,后面加点号,然后是想要调用的属性或方法。

NO.3 打印(print)出一个类

如上所示,我们直接print一个类,只能输出该类的内存地址,所以我们如果想要显示具体内容就需要一个神奇的方法 __str__(self)

NO.4 给已有的类增加属性

Python不像C++与Java,它可以随时给类增加属性,而不是必须在定义类的时候把所有属性都加上。

NO.5 类的继承

从上图我们可以看到两个类Employee和Manager

Employee为父类,Manage为子类继承了父类的所有属性与方法,集成方法为在定义子类的时候调用父类:class Manager(Employee)

NO.6 类的方法与属性重写

再上图中我们可以看到Manager类(子类)中继承了Employee类(父类)的属性与方法,不过重写了work方法。

特别注意:如果我们重写了子类的__init__( )方法,但是还想要继承父类的初始化属性的话,可以使用super().__init__()

如图所示,子类manager使用该方法继承了Employee的初始化属性name与title,只不过title被永久定义为“Manager"。

至此关于类的重点知识已经复习完毕,明天会更新Exception和单元测试的知识点

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613G22C9A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券