Mit Aussage Arbeit an Klasse

{class foo(object): def __enter__ (self): print("Enter") def __exit__(self,type,value,traceback): print("Exit") def method(self): print("Method") with foo() as instant: instant.method()} 

Führen Sie diese py-Datei aus und die Konsole zeigt diese Meldung an:

 Enter Exit instant.method() AttributeError: 'NoneType' object has no attribute 'method' 

Nicht in der Lage, Methoden zu finden?

2 Solutions collect form web for “Mit Aussage Arbeit an Klasse”

__enter__ sollte self :

 class foo(object): def __enter__ (self): print("Enter") return self def __exit__(self,type,value,traceback): print("Exit") def method(self): print("Method") with foo() as instant: instant.method() 

Erträge

 Enter Method Exit 

Wenn __enter__ nicht self , gibt es standardmäßig None . So erhält man instant den Wert None . Aus diesem Grund bekommst du die Fehlermeldung

' KeinType' -Objekt hat kein Attribut' Methode '

(Meine Betonung)

Das Problem ist, dass deine __enter__ Methode nicht self .

Python ist die beste Programmiersprache der Welt.