2014-03-13 97 views
2

這裏是我的FUN類,但結果顯示AttributeError: FUN instance has no attribute '__trunc__'。請告訴我編碼錯誤和修改內容在哪裏。AttributeError:FUN實例沒有屬性'__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__' 

請幫我解決這個錯誤。

回答

6

方法以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__' 

添加一個self說法:

def matrix(self, I, J, fill=0.0): 

你需要的其他方法,以及這樣做;除__init__方法外,所有方法均缺失self

的Python嘗試object.__int__第一,然後嘗試object.__trunc__,令人驚奇的未公開的方法。只有math.truncate()文檔和Numbers Type Hierarchy PEP 3141 proposal提到該方法。

+0

感謝您的建議,它在發表自己的論點後正在努力。但是對於隨機浮動函數,它給出的錯誤爲:Traceback(最近調用最後一個): 文件「functions.py」,第43行,在 print f.rand(2.0,3.1) 文件「functions.py 「,line 18,in rand self.rand = float((ba)* random.random()+ a) TypeError:不支持的操作數類型爲 - :'type'和'type' – lkkkk

+0

@Latik:You因爲'def rand(self,a,b):',then'self.rand =(ba)* random.random()+ a',然後'返回self.rand'工作正常。 –

+0

好吧....它正在工作.. thnx – lkkkk

相關問題