【问题标题】:Get an object attribute [duplicate]获取对象属性[重复]
【发布时间】:2011-09-12 09:36:59
【问题描述】:

简单的问题,但由于我是 python 新手,从 php 过来,我得到了一些错误。
我有以下简单的类:

User(object)
        fullName = "John Doe"

user = User()

在 PHP 中,我可以执行以下操作:

$param = 'fullName';
echo $user->$param; // return John Doe

我如何在 python 中做到这一点?

【问题讨论】:

标签: python


【解决方案1】:

要访问对象的字段或方法,请使用点.

user = User()
print user.fullName

如果要在运行时定义字段名称,请使用 buildin getattr 函数:

field_name = "fullName"
print getattr(user, field_name) # prints content of user.fullName

【讨论】:

    【解决方案2】:

    您可以执行以下操作:

    class User(object):
        fullName = "John Doe"
    
        def __init__(self, name):
            self.SName = name
    
        def print_names(self):
            print "Names: full name: '%s', name: '%s'" % (self.fullName, self.SName)
    
    user = User('Test Name')
    
    user.fullName # "John Doe"
    user.SName # 'Test Name'
    user.print_names() # will print you Names: full name: 'John Doe', name: 'Test Name'
    

    例如,可以使用 istance 检索任何对象属性。

    【讨论】:

    • 但是 OP 有一个字符串。
    【解决方案3】:

    如果您需要动态获取对象的属性,请使用getattr() 函数:getattr(user, "fullName") - 或详细说明:

    user = User()
    property = "fullName"
    name = getattr(user, property)
    

    否则就使用user.fullName

    【讨论】:

      【解决方案4】:

      如果您有字符串形式的属性,请使用getattr

      >>> class User(object):
             name = 'John'
      
      >>> u = User()
      >>> param = 'name'
      >>> getattr(u, param)
      'John'
      

      否则使用点.

      >>> class User(object):
             name = 'John'
      
      >>> u = User()
      >>> u.name
      'John'
      

      【讨论】:

        猜你喜欢
        • 2017-05-21
        • 2013-06-25
        • 1970-01-01
        • 2011-09-20
        • 1970-01-01
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多