2011-06-10 189 views
21

简单的问题,但因为我是python的新手,从PHP来了,我得到了一些错误。
我有以下简单的类:获取对象属性

User(object) 
     fullName = "John Doe" 

user = User() 

在PHP中,我可以做到以下几点:

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

如何在Python这样做呢?

回答

55

访问对象的使用点.的字段或方法:

user = User() 
print user.fullName 

如果字段的名称将在运行时被定义,使用的buildin getattr功能:

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

你可以请执行以下操作:

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进行检索。

+0

但OP有一个字符串。 – rubik 2011-06-10 10:28:41

2

如果您需要动态地获取对象的属性,使用getattr()功能:getattr(user, "fullName") - 或阐述:

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

否则只是使用user.fullName

13

使用getattr,如果你有一个字符串形式的属性:

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

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

否则使用点.

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

>>> u = User() 
>>> u.name 
'John'