Tóm lại, SimpleNamespace
đơn giản là không hỗ trợ trường hợp sử dụng này. Nhưng không sao đâu. Chúng tôi có thể mở rộng SimpleNamespace
và xây dựng chức năng này cho chính mình
Định nghĩa from types import SimpleNamespace
my_namespace = SimpleNamespace[a=1, b=2, c=3]
my_namespace.a # 1
my_namespace.b # 2
my_namespace.c # 3
0
from types import SimpleNamespace
my_namespace = SimpleNamespace[a=1, b=2, c=3]
my_namespace.a # 1
my_namespace.b # 2
my_namespace.c # 3
from types import SimpleNamespace
# this is how SimpleNamespace looks when output
SimpleNamespace[**my_dict]
# namespace[a={'d': 4}, b=2, c=3, e=[5, 6, 7, {'f': 8}]]
class RecursiveNamespace[SimpleNamespace]:
@staticmethod
def map_entry[entry]:
if isinstance[entry, dict]:
return RecursiveNamespace[**entry]
return entry
def __init__[self, **kwargs]:
super[].__init__[**kwargs]
for key, val in kwargs.items[]:
if type[val] == dict:
setattr[self, key, RecursiveNamespace[**val]]
elif type[val] == list:
setattr[self, key, list[map[self.map_entry, val]]]
# this is how RecursiveNamespace looks when output
RecursiveNamespace[**my_dict]
# RecursiveNamespace[
# a=RecursiveNamespace[d=4],
# b=2,
# c=3,
# e=[5, 6, 7, RecursiveNamespace[f=8]]]
Vì vậy, những gì đang xảy ra ở đây? . Trong phương thức khởi dựng của
from types import SimpleNamespace
my_namespace = SimpleNamespace[a=1, b=2, c=3]
my_namespace.a # 1
my_namespace.b # 2
my_namespace.c # 3
3, chúng ta gọi phương thức khởi tạo của SimpleNamespace
. Sau đó, chúng tôi chỉ cần xem qua từ điển của mình và đối với giá trị cũng là từ điển hoặc danh sách, chúng tôi khởi tạo giá trị đó với from types import SimpleNamespace
my_namespace = SimpleNamespace[a=1, b=2, c=3]
my_namespace.a # 1
my_namespace.b # 2
my_namespace.c # 3
0. tà đàLàm cách nào để phân tích cú pháp tệp YAML trong Python?
Ví dụ đọc tệp Yaml mẫu .
Đầu tiên nhập mô-đun yaml bằng cách sử dụng câu lệnh nhập
Đọc tệp bằng phương pháp mở
phương thức safe_load đọc nội dung tệp và chuyển đổi nó thành đối tượng python từ điển
kèm theo tập tin đọc thử và mong đợi khối xử lý ngoại lệ
Trình phân tích cú pháp Python YAML tốt nhất là gì?
Trình phân tích cú pháp YAML của python được sử dụng nhiều nhất là PyYAML , một thư viện cho phép bạn tải, phân tích cú pháp và viết YAML, giống như JSON của Python .
PyYAML có giống với YAML không?
YAML là định dạng tuần tự hóa dữ liệu được thiết kế để con người có thể đọc được và tương tác với các ngôn ngữ kịch bản. PyYAML là trình phân tích cú pháp YAML và trình phát cho ngôn ngữ lập trình Python .
Làm cách nào để chuyển đổi dict thành đối tượng Python?
Phương pháp 1. Sử dụng mô-đun json. Chúng ta có thể giải quyết vấn đề cụ thể này bằng cách nhập mô-đun json và sử dụng hook đối tượng tùy chỉnh trong json. phương thức load[] .