2010-04-10 31 views
65

Làm cách nào để bạn đặt/nhận giá trị thuộc tính của t được cung cấp bởi x.Cách truy cập thuộc tính đối tượng cho trước chuỗi tương ứng với tên thuộc tính đó

class test(): 
    attr1 = int 
    attr2 = int 

t = test() 
x = "attr1" 
+2

trùng lặp: http://stackoverflow.com/questions/1887509/access-to-class-attributes-by-using-a-variable-in-python –

+1

có thể trùng lặp của [Python: truy cập thuộc tính lớp từ chuỗi] (http://stackoverflow.com/questions/1167398/python-access-class-property-from-string) – fejese

Trả lời

149

Có được tích hợp chức năng gọi getattrsetattr

getattr(object, attrname) 
setattr(object, attrname, value) 

Trong trường hợp này

x = getattr(t, "attr1") 
setattr(t, 'attr1', 21) 
+5

Ngoài ra còn có delattr để xóa các thuộc tính, nhưng điều này hiếm khi được sử dụng. –

+3

và hasattr để thử nghiệm có hay không một đối tượng có một attr cụ thể mặc dù trong trường hợp đó bằng cách sử dụng ba hình thức đối số getattr (đối tượng, attrname, mặc định) thường là tốt hơn. – Duncan

+0

Đây chắc chắn là cách duyên dáng! – larry

5

Có trăn được xây dựng trong các chức năng setattr và getattr. Có thể dùng để thiết lập và lấy thuộc tính của một lớp.

Một ví dụ ngắn gọn:

>>> from new import classobj 

>>> obj = classobj('Test', (object,), {'attr1': int, 'attr2': int}) # Just created a class 

>>> setattr(obj, 'attr1', 10) 

>>> setattr(obj, 'attr2', 20) 

>>> getattr(obj, 'attr1') 
10 

>>> getattr(obj, 'attr2') 
20 
Các vấn đề liên quan