【问题标题】:Why TypeError happens为什么会发生 TypeError
【发布时间】:2015-09-23 07:07:04
【问题描述】:

为什么会发生 TypeError?

是这样的情况:

class kyori():
 def create_distmatrix(seif,arg):
     city_x     = randn(N)    
     city_y     = randn(N)    
     global city_dists
     for i in range(N):
         seif.city_dists.append([])
         for j in range(N):
             dx = city_x[i]-city_x[j]
             dy = city_y[i]-city_y[j]
             seif.city_dists[i].append(sqrt(dx**2 + dy**2))

错误代码:

Traceback (most recent call last):
 File "C:\Users\****\Documents\workspace\*****\src\sales.py", line 74, in <module>
   a.create_distmatrix()
TypeError: create_distmatrix() takes exactly 2 arguments (1 given)

【问题讨论】:

  • 你在哪里打电话create_distmatrix?
  • 你想要self 而不是seif?发生错误是因为您使用 a.create_distmatrix() 调用没有参数的函数。将def create_distmatrix(seif,arg): 更改为def create_distmatrix(self): 将修复它
  • 你的问题是为什么在这种情况下抛出的错误(函数调用中缺少参数)是TypeError?否则,堆栈跟踪说明了整个故事。

标签: python arguments typeerror


【解决方案1】:

您似乎想要self 而不是seif。您在函数定义中有第二个参数:

def create_distmatrix(seif,arg):

但是你在调用它时没有通过争论(a.create_distmatrix())导致 TypeError。改变

def create_distmatrix(seif,arg):

到

def create_distmatrix(self):

解决问题。您似乎没有在函数中的任何地方使用arg。所以你不需要它。

【讨论】:

  • 谢谢你回答我。我试过了,但不能出现错误,如:Traceback (most recent call last): File "C:\Users\***\Documents\workspace\***\src\sales.py", line 74, in &lt;module&gt; a.create_distmatrix() File "C:\Users\Maeda\Documents\workspace\zyoukan2\src\sales.py", line 34, in create_distmatrix seif.city_dists.append([]) AttributeError: kyori instance has no attribute 'city_dists'我该如何解决这个错误?
  • 试试city_dists.append([]) 而不是seif.city_dists.append([])
  • 谢谢!完成了。
  • 不客气!您也可以accept an answer 给回答者提供信用,这也会对您的声誉有所提升。
猜你喜欢
  • 2013-07-12
  • 2013-02-17
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 1970-01-01
  • 2022-09-23
  • 2017-07-20
  • 2017-09-04
相关资源
最近更新 更多