python - Python 中的 attr_reader

标签 python ruby

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/

相关文章:

python - 统计模型 API : SARIMAX function missing

python - trie 的快速序列化

ruby - IRB 错误 : undefined method 'split'

javascript - 如何使用 Ruby 查找 DOM 元素是否具有事件监听器

ruby-on-rails - rails 小号 : undefined method `symbolize_keys'

python - 使用 tkinter 分配全局变量并销毁 gui

python - 如何模拟List类型的全局变量?

python - 如何在Python中的请求中禁用代理socks5?

ruby-on-rails - Rails 中 PORO 的范围

ruby - 在模块前添加 ActiveSupport::Concern ? ruby 2+