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