Các mã như thế này:cách truy cập biến lớp theo chuỗi trong Python?
class Test:
a = 1
def __init__(self):
self.b=2
Khi tôi làm một thể hiện của Test
, tôi có thể truy cập vào dụ nó biến b
như thế này (bằng cách sử dụng chuỗi "b"):
test = Test()
a_string = "b"
print test.__dict__[a_string]
Nhưng nó không hoạt động cho a
là self.__dict__
không chứa khóa có tên a
. Sau đó, làm cách nào tôi có thể truy cập a
nếu tôi chỉ có một chuỗi a
?
Cảm ơn!
Lý do 'self .__ dict__' không chứa khóa có tên' a' là nó nằm trong 'self .__ class __.__ dict__'. Nếu bạn thực sự muốn làm mọi thứ theo cách thủ công, bạn có thể đọc lên trên thứ tự tìm kiếm cho các thuộc tính và kiểm tra mọi thứ theo cùng một thứ tự… nhưng bạn thực sự không muốn làm việc theo cách thủ công. (Bạn sẽ phải đối phó với các vùng, thuộc tính, các lớp kiểu cổ điển và mới, tùy chỉnh '__dict__'s, mô tả tùy chỉnh và tất cả các thứ khác thú vị để tìm hiểu nhưng không liên quan trực tiếp đến việc giải quyết vấn đề của bạn.) – abarnert
PS, vì đây rõ ràng là Python 2.x, bạn có thể muốn 'kiểm tra lớp (đối tượng)' ở đây, trừ khi bạn có một lý do cụ thể để tránh các lớp kiểu mới. Ngay cả đối với các chương trình thử nghiệm đơn giản, nó cũng đáng để tham gia vào thói quen. (Và đặc biệt là đối với các chương trình thử nghiệm dựa hoàn toàn vào cách thức mà hai loại lớp khác nhau ...) – abarnert