Skip to main content
 首页 » 编程设计

python之定义两个名称相同但返回类型不同的方法是否合法

2025年05月04日11bonelee

我编写了一段代码来确定典型的回文字符串。我通过返回字符串的 reverse() 方法的定义来做到这一点。我也渴望有同样的方法,但是是 void 的形式,因为一些 future 的需要。

当我将后者添加到代码中时,有效输出将变为无效。定义两个具有相同名称但返回类型不同的方法是否合法?

如果不是,我该如何用void类型的方法来写这段代码?

class detector(object): 
    def __init__(self,string): 
        self.string = string 
 
    forbidden = (' ','!','?','.','-','_','&','%',"#",",") 
 
    def eliminator(self): 
        for item in self.forbidden: 
            if item in self.string: 
                self.string = self.string.replace(item,"") 
 
    def reverse(self): 
        return self.string[::-1] 
 
    #def reverse(self): 
    #    self.string = self.string[::-1]    I am prone to add this method 
 
    def check(self): 
        reversed = self.reverse() 
        if self.string == reversed: 
            print("Yes") 
        else: 
            print("No") 
 
det = detector("rise to vote, sir!") 
det.eliminator() 
det.check() 

当我添加取消注释的行时,有效的"is"变为“否”!

请您参考如下方法:

这样写是合法的,但是没有定义两个方法。最后一个定义覆盖了第一个,所以只有最后一个存在并且总是会调用那个。和你做的一样

x = 1 
x = 2 

第一个赋值被第二个赋值抹掉了。

至于您的更大问题:拥有两个返回不同内容的方法的方法是定义两个具有不同名称的方法。 Python 对函数“打算”返回的类型一无所知。没有所谓的“空类型方法”。