2016-10-06 6 views
-2

Ich bin neu in Python. Ich möchte lernen, wie man "Konstanten" erstellt und verwendet. Hier ist mein Code:Wie funktionieren Konstanten in einem if-Block?

class Constantine(object): 
    ONE = 1 
    TWO = 2 

    def test(self, code): 
     if code not in(self.ONE, self.TWO): 
      print("safe") 
     else: 
      print("not safe") 

keeanu = Constantine() 
keeanu.test(1) 

Ich erwarte, dass der Code sicher drucken. Aber es druckt nicht sicher. Warum ?

+3

Ist '1' nicht in' (1, 2) '? Die Antwort darauf ist der Schlüssel zu deiner Verwirrung. –

+1

Was meinst du mit "Konstanten"? Python hat keine Konstanten. Wir alle tun so, als wären sie. –

Antwort

3

Sie testen, ob codenicht in (self.ONE, self.TWO) ist. Wenn es ist gefunden wird, wird es drucken, was es tut.

Der Grund dafür ist, dass der Interpreter zuerst self.ONE und self.TWO als Instanzvariablen nachschlägt. Wenn sie auf dieser Ebene nicht gefunden werden, versucht der Interpreter, sie als Klassenvariablen aufzulösen. Dies ist für Ihren Code erfolgreich.

+0

Danke. Dieser Code ist eigentlich ein Ersatz für den echten Code, den ich verwende. Ich bekomme immer noch einen Fehler im echten Code. Es gibt Einzeltests und alles. Meine Güte, ich hätte den Code vor dem Posten überprüfen sollen. –

+0

TigerhawkT3 - Entschuldigung, aber können Sie bitte Ihre Antwort löschen, damit ich diese Frage löschen kann? Ich hoffe du verstehst meine Situation. Ich kann einige Ihrer anderen Fragen auffrischen, um den Verlust von Stimmen bei dieser Frage auszugleichen, wenn Sie es wünschen. –

+0

@BoratSagdiyev - Soweit ich weiß, sollten Sie in der Lage sein, Ihre Frage unabhängig von Antworten zu löschen. Es fordert Sie einfach zur Bestätigung auf, wenn die Frage Antworten aufgestuft hat. Auf diese Weise, wenn Sie sich entscheiden, es in Zukunft zu löschen, wird es immer noch eine entsprechende Antwort haben. – TigerhawkT3

Verwandte Themen