前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Python】面向对象 ③ ( 构造函数 | 成员变量赋值问题 | 构造方法引入 | 构造函数可以同时定义成员变量 )

【Python】面向对象 ③ ( 构造函数 | 成员变量赋值问题 | 构造方法引入 | 构造函数可以同时定义成员变量 )

作者头像
韩曙亮
发布于 2023-10-11 11:23:39
发布于 2023-10-11 11:23:39
50800
代码可运行
举报
运行总次数:0
代码可运行

一、构造函数

1、成员变量赋值问题

在之前的博客中 , 定义的 Python 类 Student :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Student:
    name = None  # 姓名
    age = None  # 年龄

    def info(self):
        print(f"姓名 : {self.name} , 年龄 : {self.age}")

如果要为其成员变量赋值 , 需要分别为 name 和 age 两个成员变量赋值 ,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s = Student()
s.name = "Tom"
s.age = 18

上述 2 个变量就写了 2 行代码 , 如果有十几个变量 , 那么就需要十几行代码 , 才能完成成员变量赋值的操作 ;

2、构造方法引入

使用构造方法 , 可以在一行代码内 , 为多个变量同时赋值 , 这样就可以减少代码量 ;

构造方法简介 :

  • 构造方法函数名 : Python 类 的构造方法是 __init__() 方法 , 该方法名称 在 init 单词前后各有两个下划线 _ ;
  • 构造方法调用时机 : 在创建 类 的 实例对象时 , 会自动执行 Python 类的 __init__() 构造方法 ;
  • 构造方法参数 : 创建对象时 , 如果传入参数 , 会自动将参数传递给 __init__() 构造方法使用 ;

3、代码示例 - 构造方法

在下面的代码中 , Student 类包含了 __init__ 构造方法 , 和 info 成员方法 ;

__init__() 构造方法中 , 接收两个参数 name 和 age , 分别赋值给 name 和 age 成员变量 ;

info() 方法中 , 将学生的 name 和 age 成员打印到控制台中 ;

代码示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
面向对象 代码示例
"""


class Student:
    name = None  # 姓名
    age = None  # 年龄

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print(f"姓名 : {self.name} , 年龄 : {self.age}")


s = Student("Tom", 18)
s.info()

执行结果 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
姓名 : Tom , 年龄 : 18

Process finished with exit code 0

3、构造函数可以同时定义成员变量

在上述代码示例中 , 定义了 name 和 age 成员变量 ,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Student:
    name = None  # 姓名
    age = None  # 年龄

这两个成员变量是可以省略的 ;

构造函数还有一个作用 , 就是定义成员变量 , 并为其赋值 ;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def __init__(self, name, age):
        self.name = name
        self.age = age

下面的代码中 , 没有定义成员变量 , 直接在 __init__() 构造方法 中进行赋值 ;

代码示例 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"""
面向对象 代码示例
"""


class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print(f"姓名 : {self.name} , 年龄 : {self.age}")


s = Student("Tom", 18)
s.info()

执行结果 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
姓名 : Tom , 年龄 : 18

Process finished with exit code 0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、构造函数
    • 1、成员变量赋值问题
    • 2、构造方法引入
    • 3、代码示例 - 构造方法
    • 3、构造函数可以同时定义成员变量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档