2017-04-07 1 views
0

Zum Beispiel:Python was macht wenn 'self.root' tut?

def __init__(self): 
    self._root = None 

def get(self, key): 
    if self._root: 
     return self._root.get(key).value 
    raise KeyError 

Was zurückkommt diese if self._root:? self._root ist kein Boolescher Wert.

+1

Lesen Sie dieses: https://docs.python.org/2.4/lib/truth.html –

+0

Lesen dieses [https://stackoverflow.com/help/how-to-ask] um zu verstehen, wie man eine gute Frage stellt. –

+0

Dieses Konzept scheint in Programmiersprachen ziemlich üblich zu sein, um 'if x' zu sagen, wobei' x' kein boolescher Typ ist, aber wo eine Umwandlung in boolean in die Sprache/den Compiler bekannt ist. – quamrana

Antwort

0

Nun, es gibt viele Möglichkeiten, es zu betrachten. Der einfache Weg, um zu überprüfen, was passieren würde, ist einfach, überprüfen Sie einfach den Ablauf mit einer einfachen "Wenn" -Anweisung.

>>> if None: 
...  print("True") 
... else: 
...  print("False") 
... 
False 

Nun, für etwas, das mehr anzeigt, können Sie eine nicht „None“ Wert überprüfen und sehen, was passiert.

>>> a = "asf" 
>>> if a: 
...  print("True") 
... else: 
...  print("False") 
... 
True 
>>> a = None 
>>> if a: 
...  print("True") 
... else: 
...  print("False") 
... 
False 

also die if-Anweisung du da überprüft, ob self._root Keiner ist oder nicht, und ruft eine Methode davon, wenn es nicht None ist.

-1

es davon ab, was self._root ist
zum Beispiel:

class Node(object): 
    def __init__(self): 
     self._root = None 

    def get(self, key): 
     if self._root: 
      return self._root.get(key).value 
     raise KeyError 

class MyDict(object): 
    def __init__(self,value): 
     self.value=value 

n=Node() 
n._root={'key':MyDict('value')} 
print(n.get('key')) #the result is 'value' 
+0

Sie haben Ihren Code nicht erklärt, nur ein anderes Beispiel gegeben, das dem Benutzer nicht wirklich hilft, die Frage zu stellen. – Adam

+0

Erklären Sie den Code vielleicht besser. Aber ich denke, dass der Code so einfach ist, dass es nicht notwendig ist, erklärt zu werden. Und ich würde dem Fragesteller vorschlagen, dies [stackoverflow.com/help/how-to-ask] zu lesen, um zu verstehen, wie eine gute Frage stellen. – williezh