gpt4 book ai didi

Python 类/函数和 self 参数

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

我有一些简单的代码来查找加起来等于总和的 2 个元素的索引。 (假设列表中存在总和)

class Solution(object):
def twoSum(self, nums, target):
compliment = []
for ind, item in enumerate(nums):
print(ind)
if item in compliment:
return [nums.index(target - item), ind]
compliment.append(target - item)
return [0, 0]

if __name__ == "__main__":

result = Solution()
final = result.twoSum([3, 3], 6)

#Why does this not work without removing the self parameter??
#final = Solution.twoSum([3, 3], 6)

print(str(final))

我正在尝试学习如何在 Python 中最好地实例化一个对象。在我的 main 函数中,我想通过用 1 行而不是 2 行来简化它。您可以看到我两次尝试调用此类中的函数。第二个失败,除非我从函数参数中删除 self 参数。这是因为我试图传递 2 个而不是 3 个参数。

无论如何,我很困惑为什么我的两个实现不同以及为什么一个有效而另一个无效。我也不确定我是否需要 self 。当你有 __init__ 并为类定义变量时,似乎 self 主要被使用?既然我不在这里这样做,我到底需要它吗?

最佳答案

self 参数仅对于实例方法是必需的(并且仅有效)。实例方法也是默认类型。要在没有实例且没有 self 参数的情况下使用它,请将其装饰为 staticmethod:

class Solution(object):
@staticmethod
def twoSum(nums, target):
compliment = []
for ind, item in enumerate(nums):
print(ind)
if item in compliment:
return [nums.index(target - item), ind]
compliment.append(target - item)
return [0, 0]

if __name__ == "__main__":

final = Solution.twoSum([3, 3], 6)
print(str(final))

关于Python 类/函数和 self 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53357474/

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