sách gpt4 ai đã đi

Cho phép danh sách (thể hiện) hoặc tuple (thể hiện) trên thể hiện của lớp do người dùng định nghĩa

In lại 作者:行者123 更新时间:2023-12-05 08:51:09 29 4
mua khóa gpt4 Nike

有没有一种方法可以使用标准类型构造函数(例如 int、set、dict、list、tuple 等)以用户定义的方式将用户定义类的实例强制转换为其中一种类型?例如

class Example:
định nghĩa __init__(bản thân):
self.a=1
self.b=2

然后有

>>> ex = Example()
>>> dict(ex)
{"a":1, "b":2}

我不知道这是否可行,如果可行,我需要在类定义中添加什么。现在我需要这个并且我实现了一个我在对象上调用的“as_dict”方法,但它看起来并不自然。

1 Câu trả lời

通过添加 __iter__() 方法使您的类型可迭代。平凡地:

class Example:

định nghĩa __init__(bản thân):
self.a = 1
self.b = 2

def __iter__(self):
yield "a", self.a
yield "b", self.b

这会产生一个包含名称/值对的元组序列,dict() 很乐意使用它。

dict(Example()) # {'a': 1, 'b': 2}

当然,里面有很多重复自己的地方。因此,您可以改为编写 __iter__() 来处理预定义的属性列表:

def __iter__(self):
names = "a", "b"
for name in names:
yield name, getattr(self, name)

您还可以让它内省(introspection)实例中的tất cả属性,忽略其值可调用的属性:

def __iter__(self):
names = dir(self)
for name in names:
value = getattr(self, name)
if not callable(value):
yield name, value

或者让它从实例的 __dict__ 属性中产生,它只包含直接存储在实例上的属性(上面的 dir() 方法也可以找到继承的属性):

def __iter__(self):
yield from self.__dict__.items()

关于python - 在用户定义类的实例上启用列表(实例)或元组(实例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60346069/

29 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com