2016-10-06 8 views
-2

私はPythonの初心者です。私は "定数"を作り、使用する方法を学びたいと思う。ここに私のコードです:ifブロックの定数はどのように機能しますか?

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) 

私はコードが安全に印刷されることを期待しています。しかし、それは安全ではありません。どうして ?

+3

'(1、2)'に '1'は入っていませんか?これに対する答えは、あなたの混乱の手がかりです。 –

+1

「定数」とはどういう意味ですか? Pythonには実際には定数はありません。私たちはただ彼らのふりをしています。 –

答えて

3

あなたはcode(self.ONE, self.TWO)ないであるかどうかをテストしています。 の場合、not safeと表示されます。

理由は、インタープリターがインスタンス変数としてself.ONEself.TWOを最初に検索するためです。そのレベルで見つからなければ、インタプリタはそれらをクラス変数として解決しようとします。これはあなたのコードで成功します。

+0

ありがとうございます。このコードは実際に私が使用している実際のコードの代わりです。私はまだ実際のコードでエラーが発生します。ユニットテストとすべてがあります。ああ、私はそれを投稿する前にコードをチェックしておくべきだった。 –

+0

TigerhawkT3 - 申し訳ありませんが、この質問を削除できるように回答を削除していただけますか?あなたが私の状況を理解することを願っています。私はあなたの望むならば、あなたの他の質問のいくつかをアップヴォートすることができます。 –

+0

@BoratSagdiyev - 私が知っている限り、回答に関係なく質問を削除することができます。質問が答えをアップアップしている場合は、確認を求めるメッセージが表示されます。そうすれば、将来、削除を取り消すことに決めた場合でも、対応する回答が得られます。 – TigerhawkT3

関連する問題