您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python初始化

5b51 2022/1/14 8:21:27 python 字数 2709 阅读 490 来源 www.jb51.cc/python

我有这个代码:def __init__(self, a, b, c, d...): self.a = a self.b = b etc 我想用以下代替它:def __init__(self, a, b, c, d...): args=locals() for key in args: self.__dict__[key

概述

我有这个代码

def __init__(self,a,b,c,d...):
   self.a = a
   self.b = b
   etc

我想用以下代替它:

def __init__(self,d...):
   args=locals()
   for key in args:
     self.__dict__[key] = args[key]

这是一个坏主意吗?有没有更好的方法来做到这一点?

如果您正在接受20个参数,那么要求您的用户通过关键字而不是位置发送参数可能更有意义:使用20个参数,使用您的代码的人有可能以错误的顺序获取参数.

考虑只接受kwargs,同时拥有您想要接受的预定义键列表,如果您没有收到它们,则会引发ValueError.所以你可以使用** kwargs,然后检查一切都在那里.例如.

INITIAL_ARGS = set(['a','b','c','d','e'...])

def __init__(self,**kwargs):
    if not INITIAL_ARGS.issubset(set(kwargs.iterkeys())):
        raise ValueError("Class 
  
   kwargs))
    self.__dict__.update(
   kwargs)

  

不确定这是否比你原来的更多或更少Pythonic,但似乎在以后试图弄清楚为什么使用你的代码的人可能会遇到奇怪的错误时会节省大量的时间.

总结

以上是编程之家为你收集整理的Python初始化全部内容,希望文章能够帮你解决Python初始化所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶