attr_reader
在 python 中是否有一个“同义词”,就像不需要让我输入的东西一样?:
class Foo():
def __init__(self, foo, bar, spam, spammity, spam, spam, quux, foobar, barfoo):
self.foo = foo
self.bar = bar
self.spam = spam
# And so on...
只需一行代码就可以生成 self.foo = foo, etc.
,有点像 ruby 的 attr_reader
会生成
@foo = foo
最佳答案
要设置所有内容,请尝试:
class Foo():
def __init__(self, **kwargs):
for k,v in kwargs.items():
setattr(self, k, v)
或者只是一些属性:
class Foo():
def __init__(self, **kwargs):
for k in ['foo', 'bar', 'spam']:
setattr(self, k, kwargs[k])
或者来自(一些)ctor args:
class Foo():
def __init__(self, foo, bar, spam, bork, kevork):
for k in ['foo', 'bar']:
setattr(self, k, locals()[k])
或者全部:
class Foo():
def __init__(self, foo, bar, spam, bork, kevork):
args = dict(locals())
for k, v in (k,v for k,v in args.items() if not k == 'self'):
setattr(self, k, v)
关于python - Python 中的 attr_reader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10075778/