ich eine Klasse erstellen möchten, die wie folgt aussieht:Erstellen Sie eine Klasse mit einem „ndarray“ -Attribut
class MyStructure:
def __init__(self, ndarray_type):
self.data = ndarray_type
Und ich möchte ein Objekt dieser Klasse als Argument für andere Klassen zu übergeben. Zum Beispiel:
class Edit:
def __init__(self, structureObject):
self.data = structureObject
def Gray(self, image):
r,g,b = image[:,:,0], image[:,:,1], image[:,:,2]
gray = 0.2989*r + 0.5870*g + 0.1140*b
return gray
Edit: Ich erhalte eine Fehlermeldung, wenn ich laufen diese:
from matplotlib.image import imread
im = imread('filename.jpg')
temp1 = MyStructure(im)
temp2 = Edit(temp1)
result = temp2.Gray(temp1)
Traceback (jüngste Aufforderung zuletzt):
Zeile 1: Ergebnis = temp2.Gray (TEMP1)
Zeile 5 in Gray: r, g, b = Bild [:,:, 0], image [:,:, 1], image [:,:, 2]
AttributeErr oder: Meinestruktur Instanz hat kein Attribut ‚getitem‘
Was genau den Fehler verursacht ? Es gibt keinen Aufruf für MyStructure in Ihrem Codebeispiel? Werfen Sie auch einen Blick in die Klassenvererbung: https://docs.python.org/2/tutorial/classes.html#inheritance, Es ist keine Lösung für Ihr Problem, nur eine andere Methode, die Sie je nach Umständen verwenden können. – armatita
Du vermisst etwas .... Wie @armatita sagte. Was verursacht den Fehler? Wie auch immer, füge 'def __getitem __ (self, index) hinzu: gib selb.data [index]' an 'MyStructure' ... Es könnte helfen. – RicLeal
'image' ist eine Instanz von' MyStructure', die keinen '[..]' Zugriff implementiert. Was ist Deine Absicht ? – rocksportrocker