欢迎光临
我们一直在努力

【Python 入门】面向对象基础:类、对象、成员变量与构造方法

文章目录

  • 前言
  • 一、面向对象思想入门
  • 二、类的定义:成员变量与成员方法
    • 2.1 基础语法
    • 2.2 self 关键字详解
    • 2.3 完整示例:学生类
  • 三、类与对象的示例:闹钟类
  • 四、构造方法 `__init__`
    • 4.1 为什么需要构造方法
    • 4.2 基础用法
    • 4.3 注意事项
  • 五、入门易错点总结
  • 六、总结

前言

面向对象是 Python 编程的核心思想之一,它模拟现实世界的事物描述方式,将属性(数据) 和 行为(功能) 封装到类中,通过创建对象来完成业务逻辑。本文从最基础的类定义、对象创建讲起,带你掌握成员变量、成员方法、self 关键字与构造方法,夯实面向对象入门基础。

一、面向对象思想入门

在程序中记录数据,如果只用字典、列表等基础结构,数据和行为是分离的,不仅写法混乱,也难以复用。面向对象的思路和现实生活一致:

  • 设计表格(类):先定义好模板,规定要记录哪些信息、具备哪些功能
  • 打印表格(创建对象):基于模板生成一个个独立的实体
  • 填写表格(属性赋值):给每个实体填充专属数据
  • 简单总结:类是设计图纸,对象是基于图纸生产的实体,一个类可以生成无数个对象,每个对象拥有独立的数据。

    二、类的定义:成员变量与成员方法

    2.1 基础语法

    Python 中使用 class 关键字定义类,类由两部分组成:

    • 成员变量(属性):类中定义的变量,用于存储数据
    • 成员方法(行为):类中定义的函数,用于实现功能

    语法格式:

    class 类名:
    # 成员变量
    变量名 = 值

    # 成员方法
    def 方法名(self, 形参1, 形参2...):
    方法体

    2.2 self 关键字详解

    成员方法的第一个参数必须是 self,这是 Python 面向对象的核心规则:

  • self 代表当前对象自身
  • 调用方法时 self 会由 Python 自动传入,无需手动传参
  • 在方法内部访问成员变量,必须通过 self.变量名 的方式
  • 补充说明:self 只是约定俗成的命名,你可以改成其他名称,但行业通用 self,不建议修改。

    2.3 完整示例:学生类

    class Student:
    # 成员方法
    def say_hi(self):
    print(f"大家好,我叫{self.name}")

    def say_hi2(self):
    # 修复了原代码中括号位置错误的语法问题
    print(f"大家好,我是:{self.name},正在学习Python")

    # 创建两个独立的对象
    stu1 = Student()
    stu1.name = "张三"
    stu1.say_hi()

    stu2 = Student()
    stu2.name = "王五"
    stu2.say_hi2()

    运行结果:

    大家好,我叫张三
    大家好,我是:王五,正在学习Python

    三、类与对象的示例:闹钟类

    我们用一个更贴近现实的案例,理解 “一个类生成多个对象” 的逻辑:

    class Clock:
    # 成员变量
    id = None # 序列号
    price = None # 价格

    # 成员方法:响铃
    def ring(self):
    import winsound
    # 参数:频率(赫兹)、持续时间(毫秒)
    winsound.Beep(2000, 3000)
    print("闹钟正在响铃!")

    # 创建第一个闹钟对象
    clock1 = Clock()
    clock1.id = "10001"
    clock1.price = 9.99
    print(f"闹钟1序列号:{clock1.id},价格:{clock1.price}")
    clock1.ring()

    # 创建第二个闹钟对象
    clock2 = Clock()
    clock2.id = "10002"
    clock2.price = 19.99
    print(f"闹钟2序列号:{clock2.id},价格:{clock2.price}")
    clock2.ring()

    易错提醒:winsound 是Windows 系统专属模块,Linux/macOS 环境无法运行,跨平台场景建议替换为打印提示或其他音频库。

    四、构造方法 __init__

    4.1 为什么需要构造方法

    上面的代码中,我们需要手动逐个给属性赋值,当属性很多时代码非常繁琐。Python 提供了 __init__ 构造方法:

    • 创建对象时自动执行
    • 可以接收参数,自动给对象属性赋值
    • 方法名前后必须各有两个下划线,属于魔术方法的一种

    4.2 基础用法

    class Student:
    # 构造方法:创建对象时自动调用
    def __init__(self, name, age, tel):
    self.name = name # 给当前对象的name属性赋值
    self.age = age
    self.tel = tel
    print("Student对象创建成功!")

    # 创建对象时直接传参,自动完成属性赋值
    stu = Student("张三", 22, "1008611")
    print(stu.name)
    print(stu.age)
    print(stu.tel)

    4.3 注意事项

  • 构造方法也是成员方法,第一个参数必须是 self
  • 无需提前在类中声明成员变量,在 __init__ 中通过 self.xxx 赋值即可自动创建实例属性
  • 类中定义的 name = None 是类属性(所有对象共享),self.name 是实例属性(每个对象独有),注意区分
  • 五、入门易错点总结

  • 忘记写 self:成员方法第一个参数必须加 self,否则调用时会报错TypeError
  • 方法内访问属性不加 self:直接写 name 会被识别为局部变量,必须写 self.name
  • 构造方法拼写错误:是 __init__(两个下划线),不是 _init_ 或 init
  • 对象创建语法:对象名 = 类名(),括号不能丢,否则拿到的是类本身而非对象
  • 六、总结

    • 面向对象核心:类是模板,对象是实体,一个类可生成多个对象
    • 类 = 成员变量(存数据) + 成员方法(实现功能)
    • self 代表当前对象自身,是方法的第一个参数,调用时自动传入
    • __init__ 构造方法用于对象初始化,创建对象时自动执行,可快速赋值属性
    赞(0)
    未经允许不得转载:171主机测评 » 【Python 入门】面向对象基础:类、对象、成员变量与构造方法
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址