背景:
我在学习C++的时候,面对C++的类的构造函数,当一个类拥有很多属性时候,构造函数的参数就变得非常臃肿,调用该类的时候必须一板一眼的输入对应的参数,十分麻烦,后来学习JAVA之后,JAVA面对构造函数传参臃肿的解决方案是 将类 构建为JAVA Bean,可是我在这学期学习python时候,自己写类的时候,发现python不太推荐实现类似JAVABean的方式,当我写一个类拥有很多属性的时候就变得非常长的参数列表,我就在思考,python这个这么简洁至上的语言肯定有其独特的解决方案,回想一下,像request库的很多函数都可以不定传参,百度发现python可以设置函数可变传参
这是我最开始的代码
class People():
def __init__(self,name,sex,age):
self.name=name
self.sex =sex
self.age =age
if __name__ == "__main__":
a = People('name','男',18)
print(a.name)
后来我想到了javabean的方法:
class People():
def Setname(self,name=None):
self.name = name
def Getname(self):
return self.name
def Setsex(self,sex):
self.sex= sex
def Getsex(self):
return self.sex
def Setage(self,age):
self.age= age
def Getage(self):
return self.age
可仔细一想,pycharm又没有像IDEA那样一键生成get/set方法的快捷键???这样反而更麻烦了
最终想通了,有像这样的解决方案:
在参数处传递一个dict,这样就可以可变传参了
class People():
def __init__(self,name,**kwargs):
self.name=name
self.sex =kwargs['sex']
self.age =kwargs['age']
最终收获,python在函数可变传参真的是简洁至上!!!