2014-03-13 11 views
2

여기는 클래스 수업이지만, 결과는 AttributeError: FUN instance has no attribute '__trunc__'입니다. 코딩 오류 및 수정 대상을 알려주십시오.AttributeError : FUN 인스턴스에 '__trunc__'속성이 없습니다.

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__' 

이 오류를 해결하는 데 도움하십시오

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) 

위의 코드는 오류의 다음과 같은 유형을주고있다.

답변

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이 누락되었습니다.

는 † 파이썬은 object.__int__ 먼저, 다음 object.__trunc__, 의외로 underdocumented 방법을 시도하려고합니다. math.truncate() 설명서와 Numbers Type Hierarchy PEP 3141 proposal 만이 방법을 언급합니다.

+0

제안 해 주셔서 감사합니다. 자기 주장을 한 후에 작동하고 있습니다. 그러나 float에 대한 함수 random의 경우 다음과 같이 오류가 발생합니다 : Traceback (가장 최근의 마지막 호출) : 파일 "functions.py", 43 행, 인쇄 f.rand (2.0,3.1) 파일 "functions.py ", 줄 18, 줄에 self.rand = float ((ba) * random.random() + a) TypeError : 'type'및 'type'에 대해 지원되지 않는 피연산자 유형 – lkkkk

+0

@Latik : You (self, a, b) :','self.rand = (ba) * random.random() + a', 그리고'return '을 사용하여 메소드 시그니처에'self' self.rand'는 잘 작동합니다. –

+0

ok .... 지금 작동 중입니다 .. thnx – lkkkk

관련 문제