Python面向对象编程入门:理解类与对象的核心概念

方予
方予
发布时间:2026-10-12 | 2人浏览过
原创

本文深入解析Python面向对象编程核心概念,对比面向过程与面向对象差异。详细讲解class类的定义、对象实例化过程及id唯一性,重点剖析__init__初始化函数的作用与调用时机,并通过student类实例演示属性与方法的操作,帮助开发者快速掌握Python OOP基础。

什么是面向对象编程?

我们是否曾接触过面向过程编程?将两者进行对比,有助于更清晰地理解其核心差异。

从直观层面看,面向过程编程倾向于通过一系列函数来处理任务,逻辑直接且简单。

面向对象编程是在面向过程之后发展起来的,但这并不意味着没有它程序就无法开发,只是开发范式有所不同。

面向对象同样使用函数,但引入了一个关键概念:将函数与数据进行绑定,形成一种关联网络,从而定义出“类”(class),即一类事物的抽象描述。

让我们通过具体的代码示例来深入感受类的定义方式。

在面向对象编程中,首要引入的概念是“class”,即类。

#这就是一个class的定义代码:
class hello_class():
    pass

接着,通过class_name() 这种语法形式来调用类,从而生成具体的对象实例。

让我们对代码进行适度升级,观察更复杂的情况。

class hello_class():
    pass
#输出类信息
print(hello_class)
print(type(hello_class))
#创建类的实例对象
print(hello_class())
print(type(hello_class()))

这里需要补充一些关键细节。

当使用print函数输出类对象时,结果通常显示为<'class全名‘ object at id序列号>,其中包含对象的内存地址信息。

以下是具体的运行结果展示。

在此引入一个新的知识点:类实例对象,通常简称为“实例”。

实例是由class生成的具体对象。对于任意一个hello_class类型的对象(可通过type函数验证),其类型必定为hello_class。

接下来,我们观察多个类和对象的交互情况。

看完单个类的定义后,我们再对比两个类的情况,其逻辑结果是一致的。

下面展示了两个类的定义以及生成对象的相关代码。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello
class student(object):
    “”“学委补充一下:__init___ 函数为类的初始化函数,在创建类对象实例的时候这个函数会被调用。”“”
    def __init__(self):
        print("hello, I am student")
class programmer(object):
    def __init__(self):
        print("hello, I am programmer")
class student(object):
    def __init__(self):
        print("hello, I am student")
class programmer(object):
    def __init__(self):
        print("hello, I am programmer")
s1 = student
print(s1)
p1 = programmer
print(p1)
s11 = student
print(s11)
p11 = programmer
print(p11)
print("*" * 16)
# 创建对象
s2 = student()
print(s2)
p2 = programmer()
print(p2)
# 创建对象
s3 = student()
print(s3)
p3 = programmer()
print(p3)

对上述代码进行简要解释。

  • 变量s1和p1在打印输出时,结果显示为‘class'类型,因为它们直接引用了类本身。
  • 变量s11和p11在打印输出时同样显示为‘class'类型,但需要注意的是,s1与s11、p1与p11分别指向相同的类对象,因此它们是不变的引用。
  • 变量s2和p2在打印输出时,结果显示为'object'类型,因为它们是通过调用类生成的实例对象。
  • 变量s3和p3在打印输出时,同样显示为'object'类型,也是实例对象的体现。

以下是上述代码的运行结果。

可以看到,在创建实例时,初始化函数被自动调用,并打印了相应的对象信息。

至此,大家应该能够清晰区分class和object的区别了。

类:描述了函数和属性的固定关系,是抽象的模板。

(类实例)对象:基于这种固定关系生成的具体个体,其内存id是动态变化的。

接下来补充关于类的属性(数据部分)的更多内容。

学委定义了一个student类,并创建了两个学生对象进行演示。

请直接复制并运行下面的代码以观察效果。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/11/15 11:58 下午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : __init__.py.py
# @Project : hello
class student(object):
    def __init__(self, name):
        self.name = name
    def get_name(self):
        return self.name
    def set_name(self, name):
        self.name = name
    def study(self):
        print(f"{self.name} : 好好学习,天天向上!")
s1= student("小白")
print(s1)
print(s1.get_name())
print(s1.study())
s2 = student("学委的学生粉丝:哈哈哈")
print(s2)
print(s2.get_name())
print(s2.study())

我们可以观察到,每次生成的对象id总是不同的(不妨多次运行验证)。

此外,每个学生对象都拥有一个name属性(用于携带姓名数据),以及三个函数属性(分别用于获取姓名、修改姓名和执行学习操作)。

随后,我们调用了每个学生的study函数,成功输出了各自的学习状态信息。

总结

Python语言简约的设计哲学,使得面向对象编程变得非常简单,开发者可以轻松地定义和获取对象。

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注本站的更多内容!

本站声明

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

Python 相关产品和应用

全部下载

专题列表