现如今面向对象编程的使用非常广泛 , 本文我们就来探讨一下Python中的面向对象编程 。
文章插图
作者 | Radek Fabisiak
译者 | 弯月 , 责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
Python支持多种类型的编程范式 , 例如过程式编程、函数式编程、面向对象编程 , 而且还可以融合多种类型的范式 。
现如今面向对象编程的使用非常广泛 。面向对象编程的基本元素是对象 , 其包含的数据成员称为属性 , 函数(例程、过程)称为方法 。
对象是类的实例 。换句话说 , 类主要定义对象的结构 , 然后我们以类为模板创建对象 。类不但包含方法定义 , 而且还包含所有实例共享的数据 。
本文我们来探讨一下Python中的面向对象编程 。我们将演示如何创建类 , 并使用类来实例化对象 。本文的主要内容如下:
- 创建Python类
- 数据属性
- 实例方法
- 属性
- 类和静态方法
- 继承
文章插图
创建Python类
我们可以使用关键字class定义Python类 , 关键字后面紧跟类的名称、分号和类的实现:
>>> classMyClass:
... pass
...
按照惯例 , Python类的命名采用首字母大写(即PascalCase) 。
现在让我们创建这个新类的一个实例 , 名为MyClass:
>>> a = MyClass
>>> a
<__main_ _.MyClass object at 0x7f32ef3deb70>
语句a = MyClass创建了MyClass的一个实例 , 并将它的引用赋值给变量a 。
我们可以通过Python内置的函数type或直接通过属性.__class__来获取类型(即对象的类) 。在拿到类(类型)之后 , 我们就可以利用属性.__ name__获取类的名字:
>>> type(a)
< class' __main__. MyClass'>
>>> a.__class_ _
< class' __main__. MyClass'>
>>> a.__class_ _.__name_ _
'MyClass'
顺便提一句 , Python类也是对象 。它们是type的实例:
>>> type(MyClass)
< class' type'>
下面 , 我们来定义一个方法 。
Python中每个实例方法的第一个参数必须对应于该实例 , 即该对象本身 。按照惯例 , 这个参数名为self 。后面是其他参数(如果有需要的话) 。在调用方法时 , 我们无需明确提供与参数self相对应的参数 。
通常 , 我们需要定义的一个最重要的方法是.__init__ 。在类的实例创建后就会调用这个方法 。该方法负责初始化类成员 。我们定义的.__init__如下:
>>> classMyClass:
... def__init__(self, arg_1, arg_2, arg_3):
... print( f'an instance of {type(self).__name__}created' )
... print( f'arg_1: {arg_1}, arg_2: {arg_2}, arg_3: {arg_3}' )
...
下面 , 我们来创建一个MyClass实例 , 看看这个初始化方法的具体工作 。我们的.__init__方法需要三个参数(arg_1、arg_2和arg_3) , 记住我们不需要传递与self对应的第一个参数 。所以 , 在实例化对象时 , 我们需要传递三个参数:
>>> a = MyClass( 2, 4, 8)
an instance ofMyClasscreated
arg_1: 2, arg_2: 4, arg_3: 8
上述声明产生的结果如下:
- 创建一个MyClass类型的对象的实例 。
- 自动调用该实例的方法.__init__ 。
- 我们传递给MyClass方法的参数:(2 , 4和8)会被传递给.__init__ 。
- .__init__执行我们的请求 , 并输出结果 。它利用type(self).__name__获取类的名称 。
文章插图
数据属性
下面我们来修改MyClass , 增加一些数据属性 。
我们利用.__init__初始化和定义了实例 , 我们还可以在这个方法或其他实例方法中 , 通过给某个数据属性赋值的方式改变属性值:
推荐阅读
- 如何使用 Python 完成 Git 管理?
- 如何让蜘蛛有效的爬行你的网站?
- 2019 年度 Python 类库 Top 10
- 用Python远程登陆服务器的最佳实践
- python+C、C++混合编程的应用
- 让腾讯大佬告诉你,写python到底用什么IDE合适
- 12道常见Python面试题,你能答对几个?
- 淘宝直播和商家合作佣金一般怎么算? 淘宝主播申请佣金链接该如何同意
- 如何实现一个简单的RPC
- 多合一小程序:小程序如何解决“用完即走,再也不来”