python定义变量参数_如何在python中从变量参数(kwargs)设置类属性

繁星点点滴滴

我提出了fqxp答案的一种变体,除了允许的属性外,还可以让您设置属性的默认值:class Foo():    def __init__(self, **kwargs):        # define default attributes        default_attr = dict(a=0, b=None, c=True)        # define (additional) allowed attributes with no default value        more_allowed_attr = ['d','e','f']        allowed_attr = list(default_attr.keys()) + more_allowed_attr        default_attr.update(kwargs)        self.__dict__.update((k,v) for k,v in default_attr.items() if k in allowed_attr)这是Python 3.x代码,对于Python 2.x,您需要至少进行一次调整,iteritems()以代替items()。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python ,__init__ 方法通常用于初始化对象的属性。通常情况下,我们只需要在 __init__ 方法定义一些属性,传递一些参数,然后通过 self.属性名 = 属性值 的方式来初始化属性。但是如果需要初始化的属性超过3个,我们可以考虑以下两种方法: 1. 使用字典或元组传递参数 我们可以将需要初始化的属性组织成一个字典或元组,然后将它们传递给 __init__ 方法。在 __init__ 方法,我们可以通过键值对或索引的方式来获取对应的值,然后进行属性的初始化。 例如: ``` class Person: def __init__(self, **kwargs): self.name = kwargs.get('name') self.age = kwargs.get('age') self.gender = kwargs.get('gender') self.address = kwargs.get('address') ``` 在创建 Person 对象时,我们可以传递多个参数,如: ``` person = Person(name='Tom', age=20, gender='male', address='China') ``` 2. 使用似于**kwargs的方式 我们也可以使用似于 **kwargs 的方式来传递多个参数。在定义,我们可以使用 *args 和 **kwargs 来接收传递的参数,然后在 __init__ 方法进行属性的初始化。 例如: ``` class Person: def __init__(self, *args, **kwargs): self.name = kwargs.get('name') self.age = kwargs.get('age') self.gender = kwargs.get('gender') self.address = kwargs.get('address') ``` 在创建 Person 对象时,我们也可以传递多个参数,如: ``` person = Person('Tom', 20, gender='male', address='China') ``` 需要注意的是,在使用这种方式时,传递的参数需要按照顺序传递,否则会出现参数不匹配的错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值