Имя свойства из переменной в ООП в Python
К свойствам объектов можно обращаться
по имени из переменной. Давайте посмотрим,
как это можно сделать. Пусть у нас есть вот
такой класс User:
class User:
def __init__(self, name, surn):
self.name = name
self.surn = surn
Давайте создадим объект этого класса:
user = User('john', 'smit')
Выведем значение его свойства:
print(user.name) # выведет 'john'
Пусть у нас есть переменная, которая хранит имя свойства:
prop = 'name'
Давайте теперь используем
значение переменной в качестве имени
свойства. Для этого применим
функцию getattr:
prop = 'name'
print(getattr(user, prop)) # выведет 'john'
Давайте теперь посмотрим, как обратиться к свойству объекта по имени из элемента списка:
props = ['name', 'surn']
print(getattr(user, props[0])) # выведет 'john'
Обратимся к свойству объекта, имя которого хранится в элементе ассоциативного массива:
props = {'prop1': 'name', 'prop2': 'surn'}
print(getattr(user, props['prop1'])) # выведет 'john'
Имя свойства объекта также можно взять из функции:
def get_prop():
return 'name'
print(getattr(user, get_prop())) # выведет 'john'
Имя свойства может быть даже свойством другого объекта:
class Prop:
def __init__(self, value):
self.value = value
prop = Prop('name')
print(getattr(user, prop.value)) # выведет 'john'
Дан следующий класс:
class Employee:
def __init__(self, name, salary):
self.name = name
self.salary = salary
Даны следующие переменные:
prop1 = 'name'
prop2 = 'salary'
Создайте объект класса Employee,
а затем обратитесь к его свойствам
через приведенные переменные.
Дан следующий класс:
class Employee:
def __init__(self, name, salary, position):
self.name = name
self.salary = salary
self.position = position
Дан список:
arr = ['name', 'salary', 'position']
Создайте объект класса Employee,
а затем обратитесь к его свойствам
через элементы списка.
Дан следующий класс:
class Employee:
def __init__(self, name, salary, position):
self.name = name
self.salary = salary
self.position = position
Дан словарь:
arr = {
'prop1': 'name',
'prop2': 'salary',
'prop3': 'position'
}
Создайте объект класса Employee,
а затем обратитесь к его свойствам
через элементы словаря.
Дан следующий класс:
class Employee:
def __init__(self, name, salary, position):
self.name = name
self.salary = salary
self.position = position
Даны следующие функции:
def get_prop1():
return 'name'
def get_prop2():
return 'salary'
Создайте объект класса Employee,
а затем обратитесь к его свойствам
через результаты выполнения функций.
Дан следующий класс:
class Employee:
def __init__(self, name, salary, position):
self.name = name
self.salary = salary
self.position = position
Дан также такой класс:
class Data:
def __init__(self):
self.prop1 = 'name'
self.prop2 = 'salary'
self.prop3 = 'position'
Выведите свойства объекта Employee
через объект Data.