Python面向对象程序设计:类、对象、实例变量与类变量详解

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

本文深入解析Python面向对象编程核心概念,详细阐述类与对象的定义关系,对比实例变量与类变量的存储机制及访问优先级。通过代码示例说明__init__初始化、self参数的作用原理,以及类变量与实例变量的创建方式与内存节约策略,帮助开发者掌握Python类设计的最佳实践。

本文通过具体实例,详细解析Python面向对象编程中类与对象、实例变量及类变量的应用方法,旨在为读者提供清晰的参考指南。

类和对象的核心概念:

  • 类用于描述具有相同属性和方法的对象集合,定义了该集合中所有对象共有的特征与行为;对象则是类的具体实例。
  • 类的优势在于将对象的功能集中封装,便于操作管理,从而有效降低代码的重复率。
  • 实例化是指创建一个类的具体对象的过程,即生成类的实例。
  • 对象是基于类定义的数据结构实例,包含两个主要数据成员:类变量和实例变量,以及相应的方法。

使用 class 语句来创建一个新类:


class Dog:
  #self 代表的是类的实例,代表当前对象的地址
  def __init__(self,name):##称为类的构造函数,进行初始化成员变量
    self.name=name
  def bulk(self):###自定义函数
    print("%s:汪汪!"%self.name)

d1=Dog("马")##创建对象,传入__init__所需的变量,self默认自动传入

d1.bulk()#调用方法
print(d1)

为什么要有self:

以类变量和实例变量为例,对于共有属性,通常直接在类体中定义,无需通过__init__;但对于如名字等私有属性,则需归属于个体。由于Python为了节约资源,不会为每个对象复制一份类的方法,所有对象均从类的定义区调用方法,因此涉及对象特有属性的方法在调用时必须传入自身对象self,以便函数获取私有数据,访问私有数据时使用“self.变量名”的方式。

附:

什么是新式类:https://www.jb51.net/article/183280.htm

实例变量和类变量的区别:

  • 实例变量是每个实例独有的数据,而类变量是该类所有实例共享的数据。
  • 变量访问顺序遵循:先查找实例变量,若实例变量中不存在,再去类变量中查找。
  • 【需要注意的是,即使是访问类中的变量,在方法内部也通常需要使用self.变量名来引用】

class Dog:
  age=8
  def __init__(self,name):
    self.name=name
  def bulk(self):
    print("汪汪")

d1=Dog("包子")
d2=Dog("馒头")
d1.age=10
print("Dog:",Dog.age,"\tD1:",d1.age,"\tD2:",d2.age)


-------------------------
结果:
Dog: 8   D1: 10   D2: 8
  • 从节约内存的角度来看,Python不会为每个对象复制一份类的数据,每个对象仅存储其特有的属性;当需要使用属性或方法时,优先检查对象自身是否存在,若不存在则向类中查找。

类变量的创建方式:

  • 可以在声明类的时候直接定义。

  • 也可以使用赋值语句来动态定义:

实例变量的创建方式:

  • 可以在__init__初始化方法中定义。

  • 也可以使用赋值语句来动态定义:

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述内容能对大家的Python程序设计有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表