Форум сайта python.su
Как можно динамически менять названия полей модели (обьектов), например:
b=Blog(name='first') #изменить на b=Blog(name_en='first2') #Общем передавать название поля, как переменную.
Отредактировано Rebra4 (Март 18, 2015 21:58:21)
Офлайн
Rebra4
А передача аргументов словарем не сработает?
Пример:
class Test(object): def __init__(self, name='', *args, **kargs): if name : self._name=name else: if kargs['name']: self._name=kargs['name'] def hello(self): return 'Hello, {}!'.format(self._name) test=Test('John') print test.hello() args={'name': 'Mike'} test=Test(**args) print test.hello()
Офлайн
args, конечно же, отсюда надо убрать.
def __init__(self, name='', *args, **kargs):
Офлайн
непонятно, как это использовать в моем объекте.
Офлайн
Rebra4непонятно, что именно вам непонятно
непонятно, как это использовать в моем объекте.
Офлайн
ну получил, я строку по вашему примеру ‘name_en’, что дальше? Как эту строку динамически вставлять в объект b=Blog(name_en='first2')?
Офлайн
b=Blog(**{"name_en": 'first2'})
Офлайн
а если сделать запись вида:
b.name_en='first2'
Офлайн
Уважаемый, вы на форуме почти три года.
За эти три года вы не удосужились освоить элементарных базовых знаний о языке. Вы не знаете, что такое setattr и зачем он нужен? За три года?
Офлайн
у меня был перерыв
Офлайн