AttributeError:FUN实例没有属性'__trunc__
这是我的类 FUN,但结果显示 AttributeError: FUN instance has no attribute '__trunc__'
。请告诉我代码中哪里出错了,以及该如何修改。
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__'
请帮我解决这个错误。
1 个回答
9
方法的第一个参数应该是 self
,但是你把它命名成了 I
,并把这个 I
传给了 range()
。这样做会让 Python 尝试把你自定义的 FUN
类的实例变成一个整数,但这失败了:
>>> class FUN: pass
...
>>> range(FUN())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: FUN instance has no attribute '__trunc__'
你需要加上一个 self
参数:
def matrix(self, I, J, fill=0.0):
你还需要对其他方法做同样的事情;除了 __init__
方法,其他方法都缺少 self
。
† Python 首先会尝试 object.__int__
,然后再尝试 object.__trunc__
,这个方法的文档 surprisingly 很少。只有 math.truncate()
的文档和 数字类型层次 PEP 3141 提案 提到了这个方法。