Python类

我们将在本节中讨论Python面向对象编程(OOP)的基础知识,比如类、对象等。

Python是一种面向对象的编程,换句话说,Python中的所有的东西都是一个对象。

面向对象编程介绍

面向对象编程(OOP)的基础包括以下术语,以后我们会经常在学习和使用中提到

  1. 数据成员
  2. 方法
  3. 对象
  4. 构造函数
  5. 方法重载
  6. 运算符重载
  7. 继承
  8. 类实例和实例化

Python类和对象

类可以被认为是对象的轮廓,而对象是数据成员和成员函数的集合。类包含可以使用该类的对象来访问的数据成员(变量)和成员函数(方法)。

新建一个类

可以使用 class 关键字以及后面加类的名字来新建一个类。语法如下,

class NameofClass:
    #data members of the class
    #member functions of the class

举例如下,

>>> class Waiter:
	name = "Andrew"
	def display():
		print('Waiter Class')	
>>> print(Waiter.display)
<function Waiter.display at 0x0359E270>
>>> print(Waiter.name)
Andrew

在上例中,新建了一个名叫 Waiter 的类,它包含了一个成员变量 name 以及一个成员方法 display()

新建一个类的对象实例

你可以通过下面的语句来新建一个类的对象示例,

obj = className()

举个例子,

>>> w = Waiter()
>>> print(w.name)
Andrew
>>> w.display()
Waiter Class

你可以看到, Waiter 类的对象实例可以通过点运算符.来访问类的成员(属性) 。

类属性

除了数据成员和成员函数之外,类还有一些Python的内置属性。

  1. __dict__:包含类的命名空间 的字典。
  2. __doc__:类的文档说明
  3. __name__:类的名称
  4. __module__: 定义类的所在模块
  5. __bases__: 包含基础类的元组

这些属性可以通过.来访问。

举例说明一下,

>>> class Waiter:
	"This is a waiter class"
	name="Andrew"
	def display():
		print("You are in waiter class")
>>> w = Waiter()

>>> print(w.__doc__)
This is a waiter class

>>> print(w.__dict__)
{}

>>> print(w.__module__)
__main__

Python类构造方法

Python类可以通过 __init__()方法来进行构造,这个内置的方法是当对应类的对象被新建时被自动调用的特殊方法。构造方法基本上是用来初始化类的成员数据。

>>> class Waiter:
        def __init__(self, n):
            self.name=n
            self.age=20
        def display(self):
            print(self.name)

>>> w=Waiter('Rob')
>>> w.display()
Rob

上例中, self 参数会在构造方法定义以及其他类方法中使用。你可以这样来看待,当你调用 w.display()方法时,它会被解释为 Waiter.display(w)

删除类的属性

你可以通过 del 来删除类对象实例中的属性。

>>> w=Waiter('Rob')
>>> w.__dict__
{'name': 'Rob', 'age': 20}
>>> del w.age
>>> w.__dict__
{'name': 'Rob'}