【问题标题】:Python Calling def in class WITHOUT __init__Python在没有__init__的类中调用def
【发布时间】:2020-07-08 00:49:14
【问题描述】:

最终目标是在没有 inti(self, ...)

的情况下运行此程序

如果它等于目标,则此代码从列表中打印两个数字 nums 设置为 [2,4,6,7] 目标为 11

我在打印我的答案时遇到问题。尝试了许多打印行,这是我的最后一行 print(Solution.twoSum([2,3,6,7],9)) 请让我知道我在这里做错了什么

class Solution(object):
def twoSum(self,nums, target):
    nums=[]
    target=0
    i=0
    j=1
    ans=[]

    while i<len(nums):
        fir=self.nums[i]
        j=i+1

        while j<len(self.nums):
            sec = self.nums[j]
            # print(fir,sec)

            if fir+self.nums[j]==self.target:
                ans=[fir,sec]
                print(ans)
                break

            j+=1
        i+=1

【问题讨论】:

  • 我不确定你到底想要做什么,但你的函数实际上什么也没做。它只会退出而不进入while。
  • 你没有设置self.nums 也没有设置self.target 所以你或多或少会得到一个错误。
  • @Ahmet 为什么会这样?
  • 你为什么要创建这个毫无意义的课程?如果您创建一个类,那么您通常会创建该类的对象,然后在其上调用方法。所以Solution().twoSum([2,3,6,7],9))

标签: python function class initialization


【解决方案1】:

你不应该直接做print(Classname.something)。你需要像这样创建一个类(一个对象)的实例:

test = Solution()
print(test.twoSum([2,3,6,7],9))

编辑:该函数缺少return 语句。一个典型的函数如下所示:

def myfunc(arg1, arg2):
    res = arg1*arg2
    return res

默认情况下,如果没有return 语句,函数返回None

【讨论】:

  • 感谢您的回答。它应该返回 [3,6],但它返回 None。这里有什么想法吗?
  • @kri_5463 是的,你必须在函数末尾添加return ans 或类似的东西。
  • 我在 if 语句下有它,它上次使用 init 工作,但它不会这样时间。
  • if 下有一个print()。但该函数仍将返回None。我猜它只会在某些情况下到达print 语句。
猜你喜欢
  • 1970-01-01
  • 2014-06-11
  • 2012-12-11
  • 1970-01-01
  • 2011-11-06
  • 2015-09-16
  • 2017-06-30
  • 2017-06-06
  • 1970-01-01
相关资源
最近更新 更多