目录
一、看一个需求
1、看一个需求
1)前面我们在创建Person类的对象时,是先把一个对象创建好后,再给他的年龄、姓名属性赋值
2)如果现在要求,在创建Person类的对象时,就直接指定这个对象的属性(年龄、姓名),该怎么做?-->使用构造方法(构造器)
二、基本介绍
1、基本介绍
构造方法(构造器)基本语法:
def __init__(self,参数列表):
代码...
2、解读构造方法
1)在初始化对象时,会自动执行__init__方法
class Person:
# 构造方法/构造器
def __init__(self):
print("__init__执行了")
p1=Person()
p2=Person()
2)在初始化对象时,将传入的参数,自动传递给__init__方法
class Person:
name=None
age=None
# 构造方法/构造器
# 构造方法是完成对象的初始化任务
def __init__(self,name,age):
print(f"__init__执行了 {name} {age}")
# 把接收到的name和age赋给属性(name、age)
# self就是当前创建的对象
self.name=name
self.age=age
# 创建对象
p1=Person("kobe",20)
print(f"p1的信息 {p1.name} {p1.age}")
p2=Person("tim",30)
print(f"p2的信息 {p2.name} {p2.age}")
3)构造方法是py预定义的,名称是__init__,注意init的前后都有两个_
三、注意事项和使用细节
1、应该类只有一个__init__方法,即使写了多个,也只有最后一个生效
class Person:
name=None
age=None
def __init__(self,name,age):
print(f"__init__执行了 {name} {age}")
self.name=name
self.age=age
def __init__(self,name):
print(f"__init__执行了 {name}")
self.name=name
# 报错
# p1=Person("kobe",20)
# 后面的__init__生效
p1=Person("kobe")
print(f"p1的信息:name={p1.name} age={p1.age}")
2、 python可以动态的生成对象属性
class Person:
# name=None
# age=None
def __init__(self,name,age):
print(f"__init__执行了 {name} {age}")
self.name=name
self.age=age
p1=Person("tim",30)
print(f"p1的信息:name={p1.name} age={p1.age}")
3、构造方法不能有返回值,比如,你返回字符串,会报 TypeError: __init__() should return None, not 'str'