Python AttributeError:FUN实例没有属性'__trunc';

Python AttributeError:FUN实例没有属性'__trunc';,python,numpy,Python,Numpy,下面是我的类FUN,但结果显示AttributeError:FUN实例没有属性'\uu trunc\uu'。请告诉我编码中的错误在哪里以及要修改的内容 import math import random import string import numpy as np import pickle from itertools import chain random.seed(0) class FUN: def __init__(self): print "fun" # set a

下面是我的类FUN,但结果显示
AttributeError:FUN实例没有属性'\uu trunc\uu'
。请告诉我编码中的错误在哪里以及要修改的内容

import math
import random
import string
import numpy as np
import pickle
from itertools import chain

random.seed(0)

class FUN:
 def __init__(self):
    print "fun"
 # set a random numbers between a & b
 def rand(a, b):
    self.rand = (b-a)*random.random() + a
    return self.rand

 # sigmoid function, tanh ~ 1/(1+e^-x)
 def sigmoid(x):
     self.sig = math.tanh(x)
     return self.sig

 def sigmoid1(x):
    self.sig1 = 1/(1+math.exp(-x))
    return self.sig1

 # derivative of sigmoid function, in terms of the output (y)
 def dsigmoid(y):
    self.dsig = 1.0 - y**2
    return self.dsig
 # getting 2d array
 #def matrix(I, J, fill=0.0):
    #return [[val for col in range(I)] for row in range(J)]
 #obtain a matrix
 def matrix(I, J, fill=0.0):
    m = []
    for i in range(I):
        m.append([fill]*J)
    return m
f = FUN()
print f.matrix(2,3)
上述代码给出了以下类型的错误:

fun
Traceback (most recent call last):
File "functions.py", line 42, in <module>
 print f.matrix(2,3)
File "functions.py", line 38, in matrix
 for i in range(I):
AttributeError: FUN instance has no attribute '__trunc__'
有趣
回溯(最近一次呼叫最后一次):
文件“functions.py”,第42行,在
打印f.矩阵(2,3)
矩阵中第38行的文件“functions.py”
对于范围(i)中的i:
AttributeError:FUN实例没有属性“\uuu trunc\uuu”

请帮助我解决此错误。

方法将
self
参数作为第一个参数;您将其命名为
I
,并将其传递给
range()
,然后尝试将
FUN
自定义类的实例转换为整数†。但失败了:

>>> class FUN: pass
... 
>>> range(FUN())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: FUN instance has no attribute '__trunc__'
其他方法也需要这样做;除了
\uuuu init\uuuu
方法之外,所有方法都缺少
self


†Python先尝试,然后尝试
对象。uuu trunc_uu
,这是一种文档不足的方法。只有文档和文档中提到了方法。

感谢您的建议,在进行自我论证后,它才起作用。但是对于函数random for float,它给出的错误是:回溯(最后一次调用):文件“functions.py”,第43行,在print f.rand(2.0,3.1)文件“functions.py”中,第18行,在rand self.rand=float((b-a)*random.random()+a)类型错误:不支持的操作数类型对于-:'type'和'type'@Latik:您所做的更改不仅仅是在方法签名中添加
self
,因为
def rand(self,a,b):
,然后
self.rand=(b-a)*random.random()+a
,然后
返回self.rand
就可以了。
def matrix(self, I, J, fill=0.0):