2012-04-17 4 views
1

私は、いくつかのPythonコードをJavaに変換することを任されています。私はPythonに関するいくつかの経験を持っていますが、その機能のいくつかには慣れていません。Python __init __ /一般関数インライン引数と等しい:

私は本質的にコンストラクタであると理解している__init__の方法を参照してください。

私はこのような引数を参照することを期待:

def __init__(self,derp1, derp2, derp3):

をしかし、コードの一部に、私は以下を参照してください。

def __init__(self,derp1=0, derp2=0, derp3=0):

、私には、それはこのようになりますは、(self、0,0,0)が渡されたときに特に使用される条件付きコンストラクタです。代わりのコンストラクタが存在しないので、これは当てはまりません。

インラインでの割り当てであってはなりません。意味がないためです。

私はこれが何を意味するのかを把握するためにグーグルを試みましたが、私は多くの運がありません。

ご提供いただけるお役に立てれば幸いです。

答えて

3

彼らはDefault Argument Valuesです。

私はJavaがそれをサポートしていないと思います。

+0

素早く簡単に答えます。私はStackOverflowの制限のためにこれを11分間受け入れることはできませんが、私はそうすることができます。本当にありがとう。 –

3

これらはデフォルトのパラメータです。 my_class(1, 2, 3)のようなクラスインスタンスを初期化することができ、derp1を1に、derp2を2に、derp3を3に設定します。デフォルトが提供されるので、my_class(5)と呼び、derp1を5に、derp1を0に、derp3を0.

derp変数は__init__関数のローカル変数なので、変数を保持したい場合は、それらをいくつかのクラス変数に割り当てる必要があります。たとえば、__init__では、self.derpaderp = derp1を実行してderp1の値を保存し、その値をクラス内の他の場所のself.derpaderpとして参照できます。

+0

私はすでに@CeramicPotのリンクから理解していますが、とにかく説明のために私からupvoteが間違いなくあります。変数名の一部として 'derp'を使うことが分かっていたのは、誰かの答えを読んでいる間に私を笑わせてしまい、' derpaderp'を読んですぐに、その点が正しいことが証明されました。 –

+0

喜んで助けてください。私があなたのコンバージョンの努力に幸運を祈った後、私は15秒後に入力を開始したので、私の答えを明らかに入力するために少し時間がかかりました。 – gfortune

+0

幸運をありがとう。これは私を抱く唯一の線だったので、私は終わった! –

関連する問題