2012-01-27 30 views

Trả lời

18
getattr(my_object, my_str) 

More on getattr.

+0

Lợi thế chống lại 'myobject .__ dict __ [my_str]' là gì? hiệu suất tốt hơn ? –

+3

Tôi có thể quay trở lại câu trả lời tiêu chuẩn "Đó là nhiều Pythonic" không? Ngoài ra, việc khai thác các biến __ riêng đi kèm với các rủi ro riêng của nó. Những gì bạn đang cố gắng làm là những gì getattr và setattr là cho. – Tom

+0

Ok cảm ơn bạn đã thông báo –

1
>>> myobject.__dict__[my_str] 
'stuff' 
+2

Lưu ý rằng việc này bị ngắt đối với các thuộc tính, '__slots__' và' __getattr __/__ getattribute __/__ setattr__' quá tải - và có thể một số thứ khác. – delnan

+0

Ok cảm ơn bạn đã thông tin. Bạn có nghĩ 'getattr (my_object, my_str)' tốt hơn cho hiệu năng không? –

+2

Hiệu suất là mối quan tâm ít nhất của bạn ở đây. Nếu có, bạn có thể viết lại phần đó (tức là toàn bộ vòng lặp, để tránh nhiều cuộc gọi chéo) trong C, nhưng bạn nên có bằng chứng vững chắc về sự chậm trễ không được chấp nhận trước khi xem xét tối ưu hóa như vậy. – delnan

1

Bạn không thể làm các __dict__ -approach nói chung. Điều gì sẽ luôn luôn làm việc là

getattr(myobject, my_str) 

Nếu bạn muốn truy cập dict giống như, chỉ cần xác định một lớp học với một chỉ số nhà khai thác quá tải.

Các vấn đề liên quan