Получить атрибут объекта
Простой вопрос, но поскольку я новичок в python, переходя от php, я получаю несколько ошибок на нем.
У меня есть следующий простой класс:
User(object)
fullName = "John Doe"
user = User()
В PHP я мог бы сделать следующее:
$param = 'fullName';
echo $user->$param; // return John Doe
Как это сделать в python?
Ответы
Ответ 1
Для доступа к полю или методу объекта используйте точку .
:
user = User()
print user.fullName
Если имя поля будет определено во время выполнения, используйте функцию buildin getattr
:
field_name = "fullName"
print getattr(user, field_name) # prints content of user.fullName
Ответ 2
Используйте getattr
, если у вас есть атрибут в строковой форме:
>>> class User(object):
name = 'John'
>>> u = User()
>>> param = 'name'
>>> getattr(u, param)
'John'
В противном случае используйте точку .
:
>>> class User(object):
name = 'John'
>>> u = User()
>>> u.name
'John'
Ответ 3
Если вам нужно динамически извлекать свойство объекта, используйте getattr(): getattr(user, "fullName")
- или для разработки:
user = User()
property = "fullName"
name = getattr(user, property)
В противном случае просто используйте user.fullName
.
Ответ 4
Вы можете сделать следующее:
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.