Yanıtlar:
setattr(x, attr, 'magic')
Yardım için:
>>> 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''.
Düzenleme: Ancak, (bir açıklamada işaret edildiği gibi) bir "saf" örneği için bunu yapamam unutmayın object. Ama muhtemelen iyi çalışacağı basit bir nesne alt sınıfına sahipsiniz. OP'yi asla böyle bir nesne örneği yapmaya zorlamam.
dirtykullanıcı girişine öznitelik eklemek için gerçekten yararlı olacaktır ...
__slots__özelliğiniz ile kendi sınıfınızla yapabilirsiniz .
int. Nedenini açıklayabilir misin? (hepsi bitti __builtin__mi?
Genellikle, bunun için sınıfları tanımlarız.
class XClass( object ):
def __init__( self ):
self.myAttr= None
x= XClass()
x.myAttr= 'magic'
x.myAttr
Bununla birlikte, bunu bir ölçüde setattrve getattryerleşik işlevlerle yapabilirsiniz. Ancak, objectdoğrudan örnekler üzerinde çalışmazlar .
>>> a= object()
>>> setattr( a, 'hi', 'mom' )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'hi'
Bununla birlikte, her türlü basit sınıf üzerinde çalışırlar.
class YClass( object ):
pass
y= YClass()
setattr( y, 'myAttr', 'magic' )
y.myAttr
x bir nesne olsun, o zaman iki şekilde yapabilirsiniz
x.attr_name = s
setattr(x, 'attr_name', s)