2017-12-03 1 views
0

Ich schrieb diese Klasse in Python einige Funktionen aus einem Datensatz zu extrahieren:Sehen Sie das Ergebnis der Klasse Objekt in Python

class Features : 

    def __init__ (self , data): 
     self.data = data 

    def Energy (self) : 
     energy=float (sum(self.data**2)) 
     return (energy) 

    def Power (self): 
     power = float (sum(self.data**4)) 
     return power 

    def NonlinearEnergy (self) : 
     limit1=0 
     NLE = 0 
     while limit1 < len(self.data): 
      NLE += float ((-self.data[limit1]*self.data[limit1-2] + self.data[limit1-1]**2)) 
      limit1+=1 

     return NLE 

    def CurveLength (self): 
     limit2=0 
     CL=0 
     while limit2 < len(self.data): 
      CL += float ((self.data[limit2] - self.data[limit2-1])) 
      limit2+=1 

und wenn ich versuche, das Ergebnis eines Datensatzes des Objekts, um zu sehen, erscheint das Ergebnis wie dass:

<bound method Features.Energy of <__main__.Features object at 0x0000028952C105C0>>

Meine Frage ist: wie kann ich das Ergebnis numerisch oder in anderen Worten, wie kann ich mein tatsächliches Ergebnis sehen?

+1

Welchen Code verwenden Sie, um das Ergebnis zu sehen? –

+5

Die von Ihnen angezeigte Ausgabe deutet darauf hin, dass Sie nur auf die Energie-Methode zugreifen, ohne sie aufzurufen. Verwenden Sie 'some_feature_object.Energy()' anstelle von 'some_feature_object.Energy' und Sie sollten einen Float erhalten. Wenn Sie wirklich wollen, dass die berechneten Werte wie Attribute funktionieren, können Sie stattdessen die Methoden mit '@ property' versehen, aber ich bin mir nicht sicher, ob das hier wirklich notwendig ist. – Blckknght

+0

https://stackoverflow.com/questions/1535327/how-to-print-a-class-or-objects-of-class-using-print –

Antwort

0

Dieses Problem tritt auf, wenn eine Methode ohne Klammern aufgerufen wird.

Werfen Sie einen Blick auf das Beispiel:

obj = Features(data) 
print (obj.Energy()) 

Also, zunächst ein neues Objekt für die Klasse erstellen und dann Ihre Methode als obj.Energy() nennen. Dies liegt daran, dass jedes Objekt, das seine Methode aufruft, als erstes Argument übergeben wird. Also, obj.Energy() übersetzt in Features.Energy(obj)

Verwandte Themen