【发布时间】:2010-05-26 11:54:15
【问题描述】:
很多时候我都有将参数复制到对象字段中的成员函数。例如:
class NouveauRiches(object):
def __init__(self, car, mansion, jet, bling):
self.car = car
self.mansion = mansion
self.jet = jet
self.bling = bling
有没有一种 Python 语言结构可以让上面的代码变得不那么乏味? 可以使用 *args:
def __init__(self, *args):
self.car, self.mansion, self.jet, self.bling = args
+:不那么乏味
-: 函数签名不够暴露。需要深入了解函数代码才能知道如何使用函数
-: 在调用错误# 参数时不会引发TypeError(但会引发ValueError)
还有其他想法吗? (无论您有什么建议,请确保调用该函数的代码保持简单)
【问题讨论】:
-
我个人并不觉得第一个太乏味。事实上,我更喜欢这种类型的代码,因为它更清晰。你几乎可以是一个假人,仍然能够准确地理解那里发生了什么。但也许这是“显式胜于隐式”的极端观点。虽然我确实同意有一个更漂亮但仍然明确的参数分配方式会很好。也许你应该写一个 PEP!
-
@bandana: 函数签名不应该揭示如何使用函数,你为什么不为你的函数提供一个
__doc__字符串?如果有问题,您可以自己提出TypeError。您还可以使用关键字参数,更明确 -
@SilentGhost:这是重复的。这是一个重复的好吧。我不知道如何结束我自己的问题
-
@bandana:你看到标签下的
close链接了吗?
标签: python parameters