行者孙Python

铸器篇-Day67 init 构造方法,给对象绑定属性

📖 知识点

init 基础语法

 

class 类名:
    def __init__(self, 参数1, 参数2):
        # 绑定实例属性
        self.属性1 = 参数1
        self.属性2 = 参数2

 

要点拆解:

  1. __init__:前后两个下划线,读作 dunder init,构造方法

  2. 创建对象的时候自动执行,不需要手动调用

  3. 第一个参数必须是self,代表当前正在创建的对象本身

  4. self.xxx:给这个对象绑定属性,每个对象的属性相互独立

  5. 实例化传参:对象 = 类名(实参1,实参2),实参会传给__init__(self 不用传)

示例代码

 

class Student:
    def __init__(self, name, age):
        # 给当前对象绑定name和age属性
        self.name = name
        self.age = age

# 实例化,括号内传入参数,传给__init__
stu1 = Student("小明",16)
print(stu1.name)
print(stu1.age)

 

输出:

 

小明
16

 

⚠️ 易错提醒

  • __init__ 是双下划线,少写就不再是构造方法

  • self 必须写在第一个位置,实例化的时候不要给 self 传值

  • self.name 是对象属性;单独的 name 只是函数局部变量

⚔️ Kata 实战任务

任务需求:

  1. 定义Student类

  2. 编写__init__,接收 3 个参数:name、age、score,绑定到 self

  3. 实例化两个学员对象

    • stu1:小红,15,92

    • stu2:小刚,16,75

  4. 分别打印两个对象的 name、age、score

参考代码

 

class Student:
    # 构造方法,实例对象自动执行
    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

# 实例化,传入属性
stu1 = Student("小红", 15, 92)
stu2 = Student("小刚", 16, 75)

print(f"学员1:姓名{stu1.name},年龄{stu1.age},分数{stu1.score}")
print(f"学员2:姓名{stu2.name},年龄{stu2.age},分数{stu2.score}")

 

运行输出:

 

学员1:姓名小红,年龄15,分数92
学员2:姓名小刚,年龄16,分数75

 

🧠 思考题

  1. 如果实例化 Student("小李"),少传 age 和 score,会发生什么?

  2. self.name 和 __init__ 的参数 name,二者有什么区别?

‹ 返回目录
🏠首页 Python 📦资源 👤关于我