Python类中countOdds方法调用报错:未处理self参数,求正确调用方式
解决Python类方法调用的self参数报错问题
你遇到的问题是因为countOdds是实例方法,这类方法默认第一个参数是self(代表类的实例),直接用Solution.countOdds(3, 11)调用时,Python会把3当成self参数,11当成low,导致参数不匹配报错。
有两种简单的解决方式:
方式一:先实例化类,再调用方法
先创建Solution类的实例对象,再通过实例调用方法,Python会自动把实例传入self参数:
class Solution(object): def countOdds(self, low: int, high: int): if low % 2 == 0 and high % 2 == 0: return (high-low)//2 else: return (high-low)//2 + 1 # 创建实例 sol = Solution() # 调用方法 result = sol.countOdds(3, 11) print(result) # 输出5(3,5,7,9,11共5个奇数)
方式二:把方法改成静态方法
如果这个方法不需要访问类或实例的任何属性,只是单纯的工具函数,可以用@staticmethod装饰器把它改成静态方法,这样就不需要self参数,直接用类名调用:
class Solution(object): @staticmethod def countOdds(low: int, high: int): if low % 2 == 0 and high % 2 == 0: return (high-low)//2 else: return (high-low)//2 + 1 # 直接通过类名调用 result = Solution.countOdds(3, 11) print(result) # 输出5
内容的提问来源于stack exchange,提问作者Weronika
相关产品推荐
相关产品推荐

