Відповіді:
setattr(x, attr, 'magic')
Для отримання допомоги:
>>> help(setattr)
Help on built-in function setattr in module __builtin__:
setattr(...)
setattr(object, name, value)
Set a named attribute on an object; setattr(x, 'y', v) is equivalent to
``x.y = v''.
Редагувати: Однак ви повинні зазначити (як зазначено в коментарі), що ви не можете зробити це для "чистого" екземпляра object
. Але ймовірно, у вас є простий підклас об'єкта, де він буде добре працювати. Я настійно закликаю ОП ніколи не робити подібних предметів.
dirty
атрибуту до вводу користувача ...
__slots__
атрибутом.
int
. Чи можете ви пояснити, чому? (це на всіх__builtin__
?
Зазвичай ми визначаємо для цього класи.
class XClass( object ):
def __init__( self ):
self.myAttr= None
x= XClass()
x.myAttr= 'magic'
x.myAttr
Тим НЕ менше, ви можете, до деякої міри, зробити це з setattr
і getattr
вбудованими функціями. Однак вони не працюють object
безпосередньо на екземплярах .
>>> a= object()
>>> setattr( a, 'hi', 'mom' )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'hi'
Однак вони працюють на всіляких простих заняттях.
class YClass( object ):
pass
y= YClass()
setattr( y, 'myAttr', 'magic' )
y.myAttr
нехай x - об’єкт, тоді ви можете це зробити двома способами
x.attr_name = s
setattr(x, 'attr_name', s)