加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用可选的关键字参数定义类’__init__方法的更好方法是什么?

发布时间:2020-12-20 13:05:49 所属栏目:Python 来源:网络整理
导读:我希望该类与以下内容相同: class Player: def __init__(self,**kwargs): try: self.last_name = kwargs['last_name'] except: pass try: self.first_name = kwargs['first_name'] except: pass try: self.score = kwargs['score'] except: pass 但这看起来
我希望该类与以下内容相同:

class Player:
    def __init__(self,**kwargs):
        try:
            self.last_name = kwargs['last_name']
        except:
            pass
        try:
            self.first_name = kwargs['first_name']
        except:
            pass
        try:
            self.score = kwargs['score']
        except:
            pass

但这看起来真的很草率.有没有更好的方法来定义这个__init__方法?我希望所有的关键字参数都是可选的.

解决方法

如果你只有3个参数,那么Bhargav Rao的解决方案更合适,但如果你有很多潜在的参数,那么试试:

class Player:
    def __init__(self,**kwargs):
        self.last_name = kwargs.get('last_name')
        # .. etc.

kwargs.get(‘xxx’)将返回xxx密钥(如果存在),如果不存在则返回None. .get接受一个可选的第二个参数,如果xxx不在kwargs(而不是None)中,则返回该参数,例如要将属性设置为空字符串,请使用kwargs.get(‘xxx’,“”).

如果您确实希望该属性未定义,如果它不在kwargs中,那么这将执行此操作:

class Player:
    def __init__(self,**kwargs):
        for k,v in kwargs.items():
            setattr(self,k,v)

这将是令人惊讶的行为所以我建议不要这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读