2016-06-14 6 views
-4

ここでは、このコードでは、selfとself.parent.leftChildの等価性をチェックしています。なぜ彼らはこの「自己」とは何か

def isLeftChild(self): 
    return self.parent and self.parent.leftChild == self 

を行っているサイトがある: - class TreeNodehttp://interactivepython.org/runestone/static/pythonds/Trees/SearchTreeImplementation.html

+1

1. 'self'は演算子ではありません。 2.「どのように」*あなたはどういう意味ですか? 3.あなたがどのような価値をどのように指しているのかは明らかではありません。それはあなたが驚くべきことを発見した 'fooとfoo.bar == foo'の処方ですか?実際には2つのパラメータで等価性をチェックしているわけではなく、まず 'self.parent'が真実(おそらく' not None')であることを確認し、次に 'leftChild'属性が' self'に等しいことを確認します。 – jonrsharpe

+0

ここで彼らはself.parentとself.parent.leftChild == selfをしています。これを行うことで何を意味するのかを知りたい –

+1

'(self.parentはNoneではありません)、(self.parent.leftChild == self)'おそらくあまり混乱しない配合ですが、それは意味がありますか? – jonrsharpe

答えて

4

ここでは、このコードでは、彼らは他の二つのパラメータを持つ自己の平等をチェックしています。

何ですか?どこ? No. a and b == cは、acを一切関係付けていません。

self.parent and self.parent.leftChild == self 

チェック

  1. self.parent場合はそうである場合、
  2. self.parent.leftChildが所定selfに等しく、(Noneない)意味のある値を有し。

言い換えれば、それは「私たち」が親の左の子供と同一であるかどうかをチェックします。これはもちろん、親があれば動作します。私たちがいなければ、私たちはその左の子ではありません。

注:私がちょうど「Noneではない」と言ったことは真実の半分に過ぎません。正確には、それは「真理値」があるかどうかをチェックする。 e。条件式の文脈で真を評価する値。 parentのように、ノードがない場合は通常Noneを使用しているので、私が書いたことは十分明確です。

+0

あなたは2番目のポイントを説明してください。 –

+1

"Sir"は、これらのような皮肉なオンプラットフォームのように聞こえます。 とにかく、ある種の親子関係で、ツリー内のオブジェクトであるとします。この構造では、すべての子はその親を知っており、すべての親はその(左と右の)子を知っています。 ここで、親( 'self.parent')について質問し、この親に左の子(' self.parent.leftChild')について問い合わせます。これが自分と同じであれば、私たちは親の左の子であることが分かりました。 – glglgl

+0

はい私はあなたを得るために始めましたが、やはり彼らは(自己)に格納されているものと同じクラスでそれらを言及しているリンクで、replaceNodedataメソッドに入れていますself(self.leftChild.parent = self)それは私を混乱させます –

関連する問題