gpt4 book ai didi

python - Python中用户定义的对象作为函数指定的参数类型

转载 作者:行者123 更新时间:2023-12-01 01:31:06 25 4
gpt4 key购买 nike

我在 Python3 中定义了我的类 Player,现在我尝试在另一个类中定义一个方法,该方法将接受对象类型 Player 作为参数,因此代码如下所示:

def change_player_activity(self, player: Player):
pass

但这给了我一个错误。我知道我可以执行以下操作:

if not isinstance(player,Player):
raise TypeError

但我只是想知道,是否有任何内置方法可以告诉 Python3 仅接受给定类的对象?

最佳答案

Is there any built-in way to tell Python3 to accept on the objects of a given class?

没有。

这并不存在,而且也没有什么用处,因为 Python 依赖于 Duck Typing 的原理。如果它看起来像一个Player,并且嘎嘎叫起来像一个Player,则将其视为一个播放器。否则,引发 TypeError

只有当您要求对象执行 Player 应该能够执行的操作但它却无法执行该操作时,才应该引发 TypeError。如果有人想将他们自己的 Player 类的实例传递到您的函数中怎么办?那就不行了。

<小时/>

回到您的实际问题:您希望在定义 Player 之前键入提示 Player。执行此操作的方法是 write "Player" instead of Player在类型提示中:

def change_player_activity(self, player: "Player"):
pass

__future__(双关语)中,Python 开发人员计划将其设为 not try to look up type hints straight away因为这种事情很痛苦。

关于python - Python中用户定义的对象作为函数指定的参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52856443/

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