Sau đây dường như hoạt động một trong hai cách. Lợi thế [trừ repr
tốt đẹp] của việc sử dụng
class SimpleNamespace:
def __init__[self, **kwargs]:
self.__dict__.update[kwargs]
def __repr__[self]:
keys = sorted[self.__dict__]
items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys]
return "{}[{}]".format[type[self].__name__, ", ".join[items]]
def __eq__[self, other]:
return self.__dict__ == other.__dict__
0 là gì? Hay đó là điều tương tự?>>> import types
>>> class Cls[]:
... pass
...
>>> foo = types.SimpleNamespace[] # or foo = Cls[]
>>> foo.bar = 42
>>> foo.bar
42
>>> del foo.bar
>>> foo.bar
AttributeError: 'types.SimpleNamespace' object has no attribute 'bar'
Khi được hỏi ngày 11 tháng 5 năm 2016 lúc 11:28May 11, 2016 at 11:28
BaruchbaruchBaruch
Huy hiệu vàng 19.6K2323 gold badges123 silver badges195 bronze badges
0
Điều này được giải thích khá tốt trong các loại mô tả mô -đun. Nó cho bạn thấy rằng
class SimpleNamespace:
def __init__[self, **kwargs]:
self.__dict__.update[kwargs]
def __repr__[self]:
keys = sorted[self.__dict__]
items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys]
return "{}[{}]".format[type[self].__name__, ", ".join[items]]
def __eq__[self, other]:
return self.__dict__ == other.__dict__
0 gần tương đương với điều này:class SimpleNamespace:
def __init__[self, **kwargs]:
self.__dict__.update[kwargs]
def __repr__[self]:
keys = sorted[self.__dict__]
items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys]
return "{}[{}]".format[type[self].__name__, ", ".join[items]]
def __eq__[self, other]:
return self.__dict__ == other.__dict__
Điều này cung cấp các lợi thế sau so với một lớp trống:
- Nó cho phép bạn khởi tạo các thuộc tính trong khi xây dựng đối tượng:
2class SimpleNamespace: def __init__[self, **kwargs]: self.__dict__.update[kwargs] def __repr__[self]: keys = sorted[self.__dict__] items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys] return "{}[{}]".format[type[self].__name__, ", ".join[items]] def __eq__[self, other]: return self.__dict__ == other.__dict__
- Nó cung cấp một
3 có thể đọc được:class SimpleNamespace: def __init__[self, **kwargs]: self.__dict__.update[kwargs] def __repr__[self]: keys = sorted[self.__dict__] items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys] return "{}[{}]".format[type[self].__name__, ", ".join[items]] def __eq__[self, other]: return self.__dict__ == other.__dict__
4class SimpleNamespace: def __init__[self, **kwargs]: self.__dict__.update[kwargs] def __repr__[self]: keys = sorted[self.__dict__] items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys] return "{}[{}]".format[type[self].__name__, ", ".join[items]] def __eq__[self, other]: return self.__dict__ == other.__dict__
- Nó ghi đè so sánh mặc định. Thay vì so sánh với
5, nó so sánh các giá trị thuộc tính thay thế.class SimpleNamespace: def __init__[self, **kwargs]: self.__dict__.update[kwargs] def __repr__[self]: keys = sorted[self.__dict__] items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys] return "{}[{}]".format[type[self].__name__, ", ".join[items]] def __eq__[self, other]: return self.__dict__ == other.__dict__
Martineau
Huy hiệu vàng 115K2525 gold badges160 silver badges282 bronze badges
Đã trả lời ngày 11 tháng 5 năm 2016 lúc 11:33May 11, 2016 at 11:33
9
Một
class SimpleNamespace:
def __init__[self, **kwargs]:
self.__dict__.update[kwargs]
def __repr__[self]:
keys = sorted[self.__dict__]
items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys]
return "{}[{}]".format[type[self].__name__, ", ".join[items]]
def __eq__[self, other]:
return self.__dict__ == other.__dict__
6 cung cấp một cơ chế để khởi tạo một đối tượng có thể giữ các thuộc tính và không có gì khác. Trên thực tế, nó là một lớp trống với fancier class SimpleNamespace:
def __init__[self, **kwargs]:
self.__dict__.update[kwargs]
def __repr__[self]:
keys = sorted[self.__dict__]
items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys]
return "{}[{}]".format[type[self].__name__, ", ".join[items]]
def __eq__[self, other]:
return self.__dict__ == other.__dict__
7 và class SimpleNamespace:
def __init__[self, **kwargs]:
self.__dict__.update[kwargs]
def __repr__[self]:
keys = sorted[self.__dict__]
items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys]
return "{}[{}]".format[type[self].__name__, ", ".join[items]]
def __eq__[self, other]:
return self.__dict__ == other.__dict__
8 hữu ích:>>> from types import SimpleNamespace
>>> sn = SimpleNamespace[x = 1, y = 2]
>>> sn
namespace[x=1, y=2]
>>> sn.z = 'foo'
>>> del[sn.x]
>>> sn
namespace[y=2, z='foo']
hoặc
from types import SimpleNamespace
sn = SimpleNamespace[x = 1, y = 2]
print[sn]
sn.z = 'foo'
del[sn.x]
print[sn]
output:
namespace[x=1, y=2]
namespace[y=2, z='foo']
Câu trả lời này cũng có thể hữu ích.
Đã trả lời ngày 5 tháng 2 năm 2021 lúc 14:12Feb 5, 2021 at 14:12
Không phải là câu trả lời bạn đang tìm kiếm? Duyệt các câu hỏi khác được gắn thẻ Python Python-3.x hoặc đặt câu hỏi của riêng bạn.
Bạn Có Thể TạO
class Namespace:
def __init__[self, **kwargs]:
self.__dict__.update[kwargs]
Và Nó Sẽ Hoạt Động Theo Cách Gir
>>> args = Namespace[a=1, b='c']
>>> args.a
1
>>> args.b
'c'
NGOÀi RA, Chỉ Cần NHập lớp; nó bạn sẵn từ ________ 19mô-ệun:
from argparse import Namespace
args = Namespace[a=1, b='c']
ĐốI VớI Python 3.3, Cũng Có
class SimpleNamespace:
def __init__[self, **kwargs]:
self.__dict__.update[kwargs]
def __repr__[self]:
keys = sorted[self.__dict__]
items = ["{}={!r}".format[k, self.__dict__[k]] for k in keys]
return "{}[{}]".format[type[self].__name__, ", ".join[items]]
def __eq__[self, other]:
return self.__dict__ == other.__dict__
0, về>>> from types import SimpleNamespace
>>> args = SimpleNamespace[a=1, b='c']
>>> args.a
1
>>> args.b
'c'
Hai loại là Khác biệt; ________ 23được sử dụng chủ yếu Cho ________ 24thuộc tính và Giá trị trả về của
>>> from types import SimpleNamespace
>>> sn = SimpleNamespace[x = 1, y = 2]
>>> sn
namespace[x=1, y=2]
>>> sn.z = 'foo'
>>> del[sn.x]
>>> sn
namespace[y=2, z='foo']
5.Vì vậy, sánh thính:
- Cả hai lớp Đều hỗ trợ kiểm tra bình đẳng; Đối với hai trường hợp của cùnm một lớp, ________ 26là đúng nếu chún đó
- Cả Hai lớp Đều Hữu Ích ________ 27 Để Hiển thị NHững Thuộc Tính Mà Chúng Có.
- ________ 28đối tượng hỗ trợ kiểm trarăn chặn; ________ 29là Đúng nếu Cá thể Không Gian Tên Có Tên Thuộc Tính
0. ________ 23không lào.from types import SimpleNamespace sn = SimpleNamespace[x = 1, y = 2] print[sn] sn.z = 'foo' del[sn.x] print[sn]
- ________ 28các Đối tượng đó là Một Bạn Có Thể NHậN ĐượC NHư Nhau Cho Một Trong Hai LớP Bằng Cách Sử Dụng
5.from types import SimpleNamespace sn = SimpleNamespace[x = 1, y = 2] print[sn] sn.z = 'foo' del[sn.x] print[sn]
- Mặc dù ________ 36đc triển Khai bằng c và ________ 28đc triển Khai bằng python Kiểm tra tính bình đẳng và tạo ra biểu diễn nhanh hơn một chút đối với c g
142 HữU não 2 Bình Luận Chia Sẻ 2 bình luận chia sẻ