前言
本文将介绍__init__函数的用法和具体细节,描述过程由浅入深,希望读者仔细阅读!
解析
面向对象的编程语言都具有构造方法,python的构造方法定义方式如下:
class person():
def __init__(self):
print("调用了构造方法")
if __name__ == '__main__':
zhangsan = person()
运行结果如下,可以看到在创建person对象的时候对自动调用__init__方法。事实上,__init__方法是所有类的内置方法,每个类在创建的时候都会都可以重写该方法作为构造方法。
下面的代码为构造方法的基本用法
class student:
def __init__(self,age,name):
self.age = age
self.name =name
self.printMessage()
def printMessage(self):
print(self.age)
print(self.name)
if __name__ == '__main__':
jack =student(name="jack", age="22")
运行结果如下:
那么,python中的构造方法只有一个__init__(self,形参),如果碰到需要输入不定量参数的情况该怎么解决呢?
其实,python中有一种独特的形参类型**args,这个形参可以以字符串的形式来引用,具体用下参考下列网址:
python中形参*args和**args的区别
因此我们可以利用这个特性写出这样的代码:
class person:
def __init__(self,**agrs):
print("调用了初始化方法")
self.name = agrs.get("name")
self.age =agrs.get("age")
self.printMessage()
def printMessage(self):
print(self.age)
print(self.name)
p1 = person(name="小明", age="18")
p2 = person(age="18",name="小明")
p3 = person(age="18")
p4 = person(name="小明")
输出结果如下
调用了初始化方法
18
小明
调用了初始化方法
18
小明
调用了初始化方法
18
None
调用了初始化方法
None
小明
Process finished with exit code 0
用**args作为形参,在创建对象的时候既可以随意定义形参的位置,也可以更加灵活地选择是否某个属性赋值,十分灵活。