Python面向对象编程入门:理解类与对象的核心概念
本文深入解析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语言简约的设计哲学,使得面向对象编程变得非常简单,开发者可以轻松地定义和获取对象。
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注本站的更多内容!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













