Câu trả lời:
setattr(x, attr, 'magic')
Để được giúp đỡ về nó:
>>> 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''.
Chỉnh sửa: Tuy nhiên, bạn cần lưu ý (như được chỉ ra trong một nhận xét) rằng bạn không thể làm điều đó với một ví dụ "thuần túy" object
. Nhưng có khả năng bạn có một lớp con đơn giản của đối tượng nơi nó sẽ hoạt động tốt. Tôi mạnh mẽ kêu gọi OP đừng bao giờ tạo ra những trường hợp như thế.
dirty
thuộc tính vào đầu vào của người dùng ...
__slots__
thuộc tính.
int
. Bạn có thể giải thích lý do tại sao? (có phải trên tất cả __builtin__
?
Thông thường, chúng tôi định nghĩa các lớp cho việc này.
class XClass( object ):
def __init__( self ):
self.myAttr= None
x= XClass()
x.myAttr= 'magic'
x.myAttr
Tuy nhiên, ở một mức độ nào đó, bạn có thể làm điều này với các chức năng setattr
và tích getattr
hợp sẵn. Tuy nhiên, họ không làm việc trên các trường hợp object
trực tiếp.
>>> a= object()
>>> setattr( a, 'hi', 'mom' )
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'hi'
Họ làm, tuy nhiên, làm việc trên tất cả các loại lớp đơn giản.
class YClass( object ):
pass
y= YClass()
setattr( y, 'myAttr', 'magic' )
y.myAttr
Đặt x là một đối tượng thì bạn có thể làm theo hai cách
x.attr_name = s
setattr(x, 'attr_name', s)