Python初始化

前端之家收集整理的这篇文章主要介绍了Python初始化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有这个代码

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]

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

最佳答案
基于@ ThiefMaster关于** kwargs的评论

如果您正在接受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 

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

原文链接:https://www.f2er.com/python/438993.html

猜你在找的Python相关文章