Как разрешить пользователю выбирать, что нужно вызвать изнутри функции? [dубликат]

Простой вопрос, но поскольку я новичок в python, переходя от php, я получаю несколько ошибок. У меня есть следующий простой класс:

User(object)
        fullName = "John Doe"

user = User()

В PHP я мог бы сделать следующее:

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

Как это сделать в python?

25
задан 4 August 2014 в 18:14

3 ответа

Вы можете сделать следующее:

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.

1
ответ дан 15 August 2018 в 15:29

Используйте getattr, если у вас есть атрибут в строковой форме:

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

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

В противном случае используйте точку .:

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

>>> u = User()
>>> u.name
'John'
12
ответ дан 15 August 2018 в 15:29

Если вам нужно динамически импортировать свойство объекта, используйте функцию getattr (): getattr(user, "fullName") - или для разработки:

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

В противном случае просто используйте user.fullName.

2
ответ дан 15 August 2018 в 15:29

Другие вопросы по тегам:

Похожие вопросы: