gpt4 book ai didi

Python:在这种情况下是否需要 isinstance()?

转载 作者:太空狗 更新时间:2023-10-30 00:50:26 29 4
gpt4 key购买 nike

我定义了一个 Time 类,它具有三个 int 属性:hrs、min、sec

然后我定义了方法 intToTime()Time 实例转换为 int,这是当时的秒数,还有一个执行相反操作的方法 timeToInt()

我希望他们实现__add__,这样我就可以做“TimeA + TimeB”或“TimeA + 100”之类的事情,其中​​ 100 是秒添加到 TimeA。

因为我想合并这两个(因为在 Python 中没有重载),

def __add__(self,num):
return Time.intToTime(self,Time.timeToInt(self)+num)

def __add__(self,other):
return Time.intToTime(self,Time.timeToInt(self)+Time.timeToInt(other))

"num"应该是一个 int,"other"是另一个 Time 实例。我知道一种使用 isinstance() 的方法。

但我的问题是,在这种情况下,我应该如何在不使用 isinstance() 的情况下实现这样的 add

最佳答案

您确实有两个选择:EAFP 或 LYBL。 EAFP(请求原谅比许可更容易)意味着使用 try/except:

def __add__(self, other):
try:
return Time.intToTime(self, Time.timeToInt(self)+Time.timeToInt(other))
except AttributeError as e:
return Time.intToTime(self, Time.timeToInt(self) + other)

请注意 Time.timeToInst(self) 有点奇怪;您通常会编写 self.timeToInt()

LYBL 的意思是三思而后行 - 即实例。你已经知道了。

关于Python:在这种情况下是否需要 isinstance()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22018652/

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