J'ai créé une classe appelée erreurs dans laquelle j'essaie de faire quelques analyses d'erreurs. Je continue à obtenir le code d'erreur:Erreur lors de l'appel d'une classe faite en python
TypeError: unbound method just_print() must be called with errors instance as first argument (got ndarray instance instead)
je suis en train d'utiliser la méthode de just_print pour utiliser juste imprimer le résultat au module interpréteur en le faisant passer les deux tableaux x, y au fil des années et temps .
Merci pour toute aide: D
mon code d'origine est al suit:
#imports
from pylab import *
#defining error class
class errors(object):
#creates class object
def __init__(self):
pass
#error method
def just_print(x,y): # defining error method
#error analysis
n = len(x) #length of the x data
D = sum(x**2) - 1./n * sum(x)**2 # d is the sum of the squares minus the sum squared over n
x_bar = mean(x) # average all x values
p_coeff, residuals, _, _, _ = polyfit(x, y, 1, full=True) #using only the first 2 results from the poly fit returned values
dm_squared = 1./(n-2)*residuals/D # error squared using standard forula
dc_squared = 1./(n-2)*(D/n + x_bar**2)*residuals/D #error squared using standard forula
dm = sqrt(dm_squared) # rooted squared error
dc = sqrt(dc_squared) # rooted squared error
#printing results
print("The value for gradient is")
print("%.3g" % p_coeff[0] , "error:" , "%.3g" % dm)
print("The value for intercept is")
print("%.3g" % p_coeff[1] , "error:" , "%.3g" % dc)
return;
#reading in data from data file called wales_temp.txt
f = open("wales_temp.txt")
temps = loadtxt(f, skiprows=8)#skips thw first 8 rows as they are information aboutthe data
f.close()
years = linspace(1911,2012,(2012 - 1911 + 1), dtype=int)#set the years array of euqal length such that each corrosponds to the temp
print("The max temprature for the lest 100 years was " , "%.3g" % max(temps) , " Celcius in " , years[argmax(temps)])
print("The min temprature for the lest 100 years was " , "%.3g" % min(temps) , " Celcius in " , years[argmin(temps)])
print("The standard deviation of the tempratures over the past 100 years is : " , "%.3g" % std(temps))
years1990 = linspace(1990,2012,(2012 - 1990 + 1), dtype=int)
temps1990 = temps[-len(years1990):]
temps1990_9degs = temps1990[9<temps1990]
percent = (float(len(temps1990_9degs)))/(float(len(temps[9<temps])))
print("The percantage of years with tempratures above 9 degrees after 1990 compared to all the years is : " , (100*percent) , "%")
hist(temps, bins=len(years))
hist(temps1990 , bins = len(years))
figure("avg temps")
plot(years, temps, "bx")
best_fit = poly1d(polyfit(years,temps,1))
plot(years,best_fit(years))
test = errors
test.just_print(years, temps)
Qu'est-ce que 'return;' est supposé faire dans votre classe 'errors'? – khelwood
'test = errors' Ceci ne crée pas d'instance' errors', il affecte les erreurs * class * (les classes ne sont qu'un autre type d'objet en Python) à la variable 'test'. Alors maintenant 'test' et' errors' sont des noms différents se référant à la même classe exacte. Pour instancier un objet, utilisez 'errors()'. Et vos classes devraient être UpperCase par convention. –
Vous souhaitez lire la section [Classes du tutoriel] (https://docs.python.org/3/tutorial/classes.html) – wwii