首页 > 解决方案 > 如何将东西放入 __init__(self):通过在变量中提供参数?

问题描述

所以,我基本上是在尝试编写一个代码,我想在声明期间声明参数,例如:

class emp:
     def __init__(self,a,b):
          self.first_name=a
          self.last_name=b
Rohan=emp("Rohan","foo",age=12,nationality="Indian")
print(Rohan.age)

以下代码产生输出:

TypeError: __ init __() got an unexpected keyword argument 'age'

我想要的是:12

如果可能的话,我也可以将默认值放在以下代码产生的位置

Jhonny=emp(age=,nationality='')

jhony.age=5
jhony.nationality="Indian"

标签: pythonclassoop

解决方案


如果您确定要这样做,可以执行以下操作:

class emp:
    def __init__(self, a, b, **kwargs):
        self.first_name = a
        self.last_name = b
        for key, val in kwargs.items():
            setattr(self, key, val)

也就是说,这样做不是很好的做法。我同意将它们作为可选参数放在你的__init__函数中会更好。


推荐阅读