gpt4 book ai didi

python - 定义类包含什么

转载 作者:太空狗 更新时间:2023-10-30 01:00:27 25 4
gpt4 key购买 nike

好吧,这可能是一个非常愚蠢的问题,它可能是不可能的,或者我在以一种扭曲的方式思考。所以,考虑一下:

class MyClass:
def __init__(self, x):
self.x = x
self.y = self.x ** 2


class MyList:
def __init__(self, list):
self.list = list

def __iter__(self):
return iter(self.list)

foo = [MyClass(x=1), MyClass(x=2)]
bar = MyList(list=foo)

for i in bar:
print(i.x, i.y)

好的,这里我们有两个类:MyClass 只是一些非常普通的东西,没有什么特别的。它有两个实例属性:xy。另一方面,MyList 应该是一个定义迭代器的类,该迭代器应该只包含第一个类 MyClass 中的元素!

然后我创建了 MyClass 的两个实例,将它们放在列表 foo 中,并使用该列表创建了 MyList 的实例( ).

现在,传递给 MyList 的列表应该只包含 MyClass 元素!我想要的是 Python 意识到这个事实!当我编写循环遍历 bar 的内容时,我希望 Python 知道 bar 中的元素是 MyClass 对象。

目前我的程序中的一个主要不便之处是 Python 不知道这一点并且自动完成功能不起作用。换句话说:在循环中,当我编写 i. 时,我希望弹出所有可能的参数(在本例中为 xy)。我可以在 Python 中为 MyList 定义一些魔术方法,让 Python 知道这个列表的内容吗?

最佳答案

如果您使用的是 PyCharm IDE,那么您可以这样做:

for i in bar:
assert isinstance(i, MyClass)

或者这个:

for i in bar: # type: MyClass

关于python - 定义类包含什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com