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

Python面向对象编程-初级篇

前言

一、面向对象和面向过程

1. 两类软件开发设计方法

面向过程编程:根据业务逻辑从上往下,将需要用到的功能代码封装到函数中,着重关注开发的步骤和过程,典型代码为C语言(关注过程)。

面向对象编程:将函数或所需要的功能进行分类和封装,着重关注具体哪个类和函数来实现功能,典型代码为Java、C++等语言(关注结果)。

2. 面向对象相关术语

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

实例:也称对象。通过类定义的初始化方法,赋予具体的值,成为一个”有血有肉的实体”。

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

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

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

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

实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

方法:类中定义的函数。

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

静态方法:不需要实例化就可以由类执行的方法。

类方法:类方法是将类本身作为对象进行操作的方法。

3. 面向对象三大特性

封装:将内部实现包裹起来,对外透明,提供api接口进行调用的机制。

继承:即一个派生类(derived class)继承父类(base class)的变量和方法。

多态:根据对象类型的不同以不同的方式进行处理。

二、类和对象

1. 对象

对象是面向对象编程的核心,在使用对象过程中,为了将具有共同特征和行为的一组对象抽象定义,形成类。

2. 类

1)概念

类是一类事物,对象即是这一类事物的具体实现,类具有相同的属性和行为。

2)类(class)的组成

类名:类的名称。

属性:事物的特征。

方法:具体做什么。

3)抽象

拥有相同或类似属性和行为的对象都可以抽象成一个类。

4)类的分类

创建类使用class关键字,带上类名,再带上括号,括号内为object,这样的类称为:新式类;也可以不带括号和括号内的object,这样的类称为:经典类。

5)创建对象

6)self

类方法的第一个参数必须是self(按惯例是self,也可以是其他名称),调用时不必传入。self代表类的实例。

三、获取或添加对象属性

如下有个名为meeting的类,类中初始化了name、age、sex、address、attack等属性,定义了introduction和attacked两个方法:

1. hasattr-检查对象是否包含指定属性或方法

用法:

hasattr(object,name)

作用:检查对象中是否包含指定属性或方法。

返回值:存在返回true、不存在返回false。

2. getattr-获取对象中指定属性的属性值

用法:

getattr(object,name[,default])

作用:获取对象中指定属性的属性值。

返回值:若存在,则返回该属性的属性值;若不存在,则返回指定内容。

打印结果如下:

3. setattr-为object对象的name属性设置指定value

用法:

setattr(object,name,value)

作用:为object对象的指定属性设置指定value

返回值:无

打印结果如下:

四、魔法方法

1. __init__() 构造函数

__init__()方法是Python中一种特殊的方法,被称为构造函数或初始化方法,当创建这个类的实例时就会调用该方法。

2. __del__() 析构函数

当删除对象时,Python解释器会默认调用一个方法__del__(),相当于unittest框架中的tearDown()函数。

每调用一次对象,都会执行一次__del__()方法。

3. 引用计数

D对象的引用计数为2次,一次是D引用,一次是sys.getrefcount所引用的。

4. __str()__字符串函数

__str__方法需要返回一个字符串,当做这个对象的描述信息,当使用print输出对象的时候,只要定义了__str__(self)方法,那么就会打印这个方法返回的数据。

未定义__str__()方法时,打印对象,打印的是Meeting类的内存地址:。

定义了__str__()方法后,打印对象,打印的是__str__()方法的返回值:我是Meeting类的字符串描述。

五、Python的内置属性

1. __dict__:获取类的属性

获取类的属性,包含一个字典,由类的数据属性组成。

2. __doc__:获取类的文档字符串

3. __name__:获取类名

4. __module__:类定义所在的模块

类的全名是'__main__.clssName',如果类位于一个导入模块mymod中,那么className.__module__等于mymod。

Meeting类的路径为__main__,而从common文件的http_requests文件中导入了HttpRequests类,打印其路径,则为common.http_requests。

5. __bases__:获取类的所有父类构成元素

获取类的所有父类构成元素(包含了一个由所有父类元素组成的元组)。

例如下面有一个Song类,其继承了父类Music,则获取到的Song类的所有父类构成元素为:()。

小结

本篇文章我们介绍了面向对象的相关概念,下面来简单总结一下:

面向对象相关概念:

类和对象:类是一类事物,对象即是这一类事物的具体实现,类具有相同的属性和行为;

类的组成:类名、属性、方法;

带object的为新式类,不带object的为经典类。

获取或添加对象属性:

hasattr:检查对象是否包含指定属性或方法;

getattr:获取对象中指定属性的属性值;

setattr:为object对象的name属性设置指定value。

魔法方法:

__init__() 构造函数:又叫初始化方法,用来初始化一些成员变量;

__del__() 析构函数:每调用一次对象,都会执行一次__del__()方法,相当于Unittest框架中的tearDown;

__str()__字符串函数:返回一个字符串,当做这个对象的描述信息。

Python内置属性:

__dict__:获取类的属性,返回值为字典类型;

__doc__:获取类的文档字符串;

__name__:获取类名;

__module__:类定义所在的模块;

__bases__:获取类的所有父类构成元素,返回类型为元组。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券