您的位置:首页 > 编程语言 > Python开发

Python3面向对象基础

2019-02-22 15:05 211 查看

Python是一种面向对象的脚本语言,所以它也提供了面向对象编程的所有基本特征:允许多继承的类继承机制、派生类可以重写它父类的任何方法、一个方法可以调用父类中同名的方法、对象可以包含任意数量和类型的数据成员。

一、类定义

语法格式如下:

[code]class ClassName:
<statement-1>
.
.
.
<statement-N>

类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。

二、类对象

类对象支持两种操作:属性引用和实例化。

1、属性引用

属性引用使用和 Python 中所有的属性引用一样的标准语法:obj.name

类对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

[code]class MyClass:
"""A simple example class"""
i = 12345
def f(self):
return 'hello world'

它有一个属性 i 和 方法 f ,所以可以用

MyClass.i
 和 
MyClass.f
 进行属性引用,分别返回一个整数和一个函数对象。__doc__ 也是一个合法的属性,返回属于这个类的文档字符串。 

 

2、实例化

类的实例化形式为:

[code]x = MyClass()

创建了一个新的实例,并且将其指定给局部变量 x 。

在创建实例时,通常可能都需要有特定的初始状态,所以一个类可以定义一个名为 

__init__()
的特殊方法(构造方法):

[code]def __init__(self):
self.data = []

当一个类定义了 __init__() 方法,类在实例化时会自动调用 __init__() 方法,用于创建新的类实例。 就像C++中的构造函数一样, __init__() 也可以有更多的参数,这时实例化提供给类的参数会传给 __init__() ,比如:

[code]#!/usr/bin/python3

class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i)   # 输出结果:3.0 -4.5

self代表类的实例,而非类

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

三、实例对象

类对象实例化得到实例对象(Instance Object),实例对象只能进行 属性引用 这一种操作。合法的属性有两种:数据属性 和 方法。

1、数据属性

数据属性(data attributes)相当于C++中的数据成员,在Python中,数据属性不需要声明,当它们第一次指定时就会被引入:

[code]class MyClass:
i = 12345
def f(self):
return 'hello world'

x = MyClass()
x.counter = 1
print(x.counter)
del x.counter

注:在Python中每个值都是一个对象,可以通过

object.__class__
来获取对象的 class (即类型),其作用与 type() 相同。

2、方法

在类对象中定义的函数与普通函数只有一个特别的区别:它们的第一个参数必须是

self
,用以指定调用该方法的实例对象。

注意:类的方法只有被绑定到实例对象上才能够被调用。比如上面的例子中,x 是 MyClass类的一个实例对象,所以它可以直接调用 f 方法:

[code]x.f()

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: