【问题标题】:Python equivalent of PHP $this->{$var} [duplicate]Python 等价于 PHP $this->{$var} [重复]
【发布时间】:2014-03-08 05:08:52
【问题描述】:

Python 是否有相当于 PHP 的 $this->{$var}

类似self.{var name}?

【问题讨论】:

  • 你的意思是直到运行时才知道属性的名称,还是别的什么?
  • 这里没有问题。
  • getattr 和 setattr 是我需要的,因为我不知道属性的名称,直到运行时,如第一条评论。
  • 当写一个询问“语言 X 是否具有语言 Y 的此功能”的问题时,解释该功能的作用总是有帮助的。否则,您将可以回答您的问题的人限制为那些了解所涉及的两种语言的人。事实上,为什么不只是问如何做你想做的事,而完全不考虑 Y 语言呢?
  • 另外,大多数时候你使用getattr,你真正想要使用的是一个dict。 getattr 通常是糟糕设计的标志,除非你正在编写元编程库。

标签: python


【解决方案1】:

要查找直到运行时才知道的属性,请使用getattr

getattr(self, "varname")

来自文档:

返回对象的命名属性的值。名称必须是字符串。如果字符串是对象属性之一的名称,则结果是该属性的值。例如,getattr(x, 'foobar') 等价于 x.foobar。如果命名属性不存在,则返回默认值,否则引发 AttributeError。

要为对象添加属性,对应的是setattr

setattr(self, "varname", value)

【讨论】:

    【解决方案2】:

    您可以使用getattr

    getattr( self, var_name )
    

    其中var_name 是一个包含字段名称的字符串变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-21
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 2013-06-24
      • 1970-01-01
      • 2019-08-05
      相关资源
      最近更新 更多