一、构造函数
1、成员变量赋值问题
在之前的博客中 , 定义的 Python 类 Student :
代码语言:javascript复制class Student:
name = None # 姓名
age = None # 年龄
def info(self):
print(f"姓名 : {self.name} , 年龄 : {self.age}")
如果要为其成员变量赋值 , 需要分别为 name 和 age 两个成员变量赋值 ,
代码语言:javascript复制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复制"""
面向对象 代码示例
"""
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复制D: 01_Develop 22_PythonPython39python.exe D:/002_Project/011_Python/HelloPython/Hello.py
姓名 : Tom , 年龄 : 18
Process finished with exit code 0
3、构造函数可以同时定义成员变量
在上述代码示例中 , 定义了 name 和 age 成员变量 ,
代码语言:javascript复制class Student:
name = None # 姓名
age = None # 年龄
这两个成员变量是可以省略的 ;
构造函数还有一个作用 , 就是定义成员变量 , 并为其赋值 ;
代码语言:javascript复制 def __init__(self, name, age):
self.name = name
self.age = age
下面的代码中 , 没有定义成员变量 , 直接在 __init__()
构造方法 中进行赋值 ;
代码示例 :
代码语言:javascript复制"""
面向对象 代码示例
"""
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复制D: 01_Develop 22_PythonPython39python.exe D:/002_Project/011_Python/HelloPython/Hello.py
姓名 : Tom , 年龄 : 18
Process finished with exit code 0