首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python基础(三)类和对象简介

上次我们留了一个小小的问题

如何用一行代码找出某个范围内所有的素数

答案我们姑且过几天揭晓

本文我们将介绍类

尽管在之前的教程似乎足以让新手上路

但这次的知识或许能让我们更稳

方便起见我们就不说面向对象了

相信大家也都知道OOP的一些基本理论啦

我们只简单提几个术语

类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

方法:类中定义的函数。

类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实例变量:定义在方法中的变量,只作用于当前实例的类。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。

实例化:创建一个类的实例,类的具体对象。

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

令人震惊的是

上海某知名财经院校的相关专业

在C++中对类和对象的知识涉及寥寥

我们言归正传

首先说类的定义

关键字class+类名:

然后定义成员变量

就像定义普通变量一样

熟悉C++等的朋友应该都知道

成员变量应当指定private/public

已经变量类型

在python中并不需要指定数据类型

在默认状态下变量都是public的

如果想要设置某个变量时private的

该变量命名必须__(双下划线)开头

(一个例子)

在类内部调用声明的成员变量

必须要引用self(相当于this)

而对于静态变量和静态方法

静态变量必须在类中声明

在构造函数中用self声明的则是类变量

静态方法在定义时,则不需要self参数

静态变量的只能通过类名.变量名引用

(静态变量和方法的例子)

熟悉C++的朋友

一定回想起析构函数

python中的类也可以有析构函数

析构函数必须用__del__()定义

我们知道python的引用计数的垃圾回收机制

(其实我们不知道)

当程序结束后

所有变量、对象将被回收

如果对象的类定义了析构函数

析构函数则会执行

我们也可以手动回收这些变量

根据计数的原理

当一个对象引用数为0

对象将被回收

也就是说我们只要想办法解除掉

p1 对其对象的引用

且这个对象没有别的变量名引用

它就会被回收

(析构函数的例子)

聪明的朋友应该也发现了

以双下划线__开头结尾的函数

有很多都是内置函数

这样的函数甚至可以支持运算符的重载

类的专有方法:

__init__ :构造函数,在生成对象时调用

__del__ :析构函数,释放对象时使用

__repr__ :打印,转换

__setitem__ :按照索引赋值

__getitem__:按照索引获取值

__len__:获得长度

__cmp__:比较运算

__call__:函数调用

__add__:加运算

__sub__:减运算

__mul__:乘运算

__div__:除运算

__mod__:求余运算

__pow__:乘方

(一个内置方法的例子)

我们再看一个加法运算的例子

就当是…俩人生孩子吧

我们不妨再看几个类的骚操作

比如我们可以给其中一个对象

添加一个成员变量

但不影响整个类的变量结构

(一个骚操作的例子)

我们再看看类的继承

相信这方面的知识朋友们已经很熟练啦

(一个类的继承的例子)

是不是感觉python的class很有趣

这就是python的魅力吧

篇幅及编者能力有限

还靠大家自己努力啦

我思故我在

知识电量不足5%

请立即充电

People always say that it's too late. However, in fact, now is the best appropriate time. For a man who really wants to seek for something, every period of life is younger and timely.

一起分享学习的点滴

扫码加入机器学习小组(为保证学习群质量请先加管理员经验证后自动加群)

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券