Python 类详解:从基础定义到继承与特殊方法

季宁
季宁
发布时间:2026-10-13| 3人浏览过
原创

本文深入解析 Python 类的核心概念,涵盖类的定义、实例化过程及__init__构造器的使用。详细阐述类属性与实例属性的区别,解析self参数的绑定机制,并介绍__del__析构函数及类特殊属性。同时讲解多重继承规则与变量作用域,帮助开发者掌握 Python 面向对象编程的关键技术点。

Python 类详解

类

1. 类是一种数据结构,用于创建实例对象。通常情况下,类封装了相关的数据以及处理这些数据的方法。

2. Python 中的类是可调用对象,即类本身也是一个对象。

3. 类通常在模块的顶层进行定义,这样可以在定义该类的源代码文件中的任何位置创建类的实例。

4. 实例初始化

  1. instance = ClassName(args....)
  2. 在实例化类时,Python 会自动调用两个特殊方法:__init__(构造器)和__del__(析构函数)。
 class ClassName(base):

'class documentation string' #类文档字符串
 class suite        #类体

  1. base:超类,即一个或多个用于继承的父类集合。
  2. 类体可以包含:声明语句、类成员定义、数据属性和方法。
  3. 如果类不存在继承关系,则无需在 class 语句后提供括号内的 base 参数。
 class FirstClass():
  spam = 30    #类数据属性
  def display(self): #类方法
   print self.spam

 x = FirstClass()   #创建类实例
 x.display()     #方法调用
 >>> 30
 dir(FirstClass)
 >>> ['__doc__', '__module__', 'display', 'spam']

  • class 语句类似于 def 语句,属于可执行代码;只有当程序运行到 class 语句时,类才会被真正创建。
  • 在 class 语句内部,任何赋值语句都会创建类属性。
  • 每个实例对象都会继承类的属性,并拥有自己独立的名称空间。

Python 类方法及调用

实例(对象)包含的属性

  • 可调用的属性:方法
  • 数据属性

在面向对象编程(OOP)中,实例可以被视为带有“数据”的记录,而类则是处理这些记录的“程序”。

  • 通过实例调用方法,相当于调用所属类的方法来处理当前实例。例如代码示例中,x.display() 会被自动转换为 FirstClass.display(x),即调用类的方法并传入实例 x 作为参数。
  • 因此,类中定义的每个方法必须包含 self 参数,它隐含地表示当前实例。
  • 在方法内部对 self 的属性进行赋值运算,会创建属于每个实例自己的属性(实例属性)。
  • Python 规定,如果没有实例,方法不允许被直接调用,这体现了“绑定”(binding)的概念。
  • class 语句中的赋值语句会创建类属性,如前文示例中的 spam。
  • 在类方法中,对传给方法的特殊参数 self 进行赋值,会创建实例属性。

Python 构造器

创建实例时,Python 会自动调用类中的__init__方法,以隐式方式为实例提供属性。

  1. __init__方法被称为构造器。
  2. 如果类中没有定义__init__方法,实例在创建之初仅仅是一个简单的名称空间。
  3. __init__的第一个参数必须是 self,self 变量用于在类实例方法中引用所绑定的实例。因为方法的实例在任何方法调用中总是作为第一个参数传递,所以选择 self 来代表实例。你必须在方法声明中写上 self,但可以在方法体中不使用实例(self)。如果你的方法中没有用到 self,那么请考虑创建一个常规函数,除非你有特别的原因。毕竟,如果方法代码没有使用实例,就没有与类关联其功能,这使得它看起来更像一个常规函数。在其它面向对象语言中,self 可能被称为 this。
  • __init__方法不能返回任何对象。
  • 析构函数:__del__
  • 构造函数是必要的,而析构函数常常可以不考虑,因为 Python 解释器会自动进行内存回收。
class MyClass():
 def __init__(self, name):
  self.name = name
  print 'My name is ' + self.name
 def __del__(self):
  print self.name + ' is dead.'

i1 = MyClass('Shaw')
>>> My name is Shaw
del i1
>>> Shaw id dead.

类的特殊属性

  • 使用 dir() 或__dict__,可以查看类或实例的属性。
  • __doc__:获取文档字符串。
  • __base__:获取所有父类。
  • __module__:类所在的模块名。
  • __name__:实例所属类的名字。

Python 类方法中可用的变量

  • 实例变量:self.变量名
  • 局部变量:方法内部创建的变量,可直接使用。
  • 静态变量(类变量):类中定义的变量,通过类名.变量名访问。
  • 全局变量:直接使用。

继承

继承描述了基类的属性如何“遗传”给派生类。

  1. 子类可以继承其基类的任何属性,包括数据属性和方法。
  2. 一个未指定基类的类,其默认有一个名为 object 的基类。
  3. Python 允许多重继承,即一个类可以继承多个父类。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。