Python3面向对象基础
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()
- Python基础(面向对象之类成员与修饰符)
- Python面向对象基础知识
- Python基础-面向对象基础
- python——面向对象基础
- python之路 面向对象基础 XML
- python基础--面向对象
- python——面向对象基础
- Python基础之六面向对象高级编程
- Python面向对象基础入门之编码细节与注意事项
- Python面向对象入门基础
- python的面向对象基础
- Python进阶三:面向对象基础
- python面向对象基础
- Python3 基础:面向对象高级编程(中)
- Python3基础(二) 关于函数、模块、包、面向对象等问题
- python——面向对象基础
- Python基础-面向对象2
- Python基础-面向对象和面向过程编程区别
- Python面向对象基础:编码细节和注意事项
- python中最后一个基础知识点,面向对象