关于python:获取对象属性

Get an object attribute

本问题已经有最佳答案,请猛点这里访问。

这个问题很简单,但是由于我对python还不熟悉,而且是从php混合过来的,所以我在这个问题上会遇到一些错误。我有以下简单的课程:

1
2
3
4
User(object)
        fullName ="John Doe"

user = User()

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

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

我如何在Python中执行此操作?


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

1
2
user = User()
print user.fullName

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

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


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

1
2
3
4
5
6
7
>>> class User(object):
       name = 'John'

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

否则,请使用dot .

1
2
3
4
5
6
>>> class User(object):
       name = 'John'

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


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

1
2
3
user = User()
property ="fullName"
name = getattr(user, property)

否则只需使用user.fullName


您可以执行以下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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'

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