javaエンジニアがpythonを学習する際の文法の違いでつまづくポイントを解説します。

python

javaエンジニアがpythonを学習する際の文法の違いでつまづくポイントを解説します。

結論:変数の定義の文法に違いがあります。

業務でjavaを扱っていますが、個人的にpythonの学習を始めてみました。
javaより簡潔なコードでわかりやすいなあと思っていたら突然、その違いに私の脳がバグったので紹介します。

↓脳がバグったコードはこちらです。

class testClass:
    def __init__(self,a,b):
        self.a = a
        self.b = b
    
    def test_fuction(self)
        self.c = "表示したい文字":
        print(self.c)
        
testInstance = testClass("テスト1","テスト2")
testInstance.test_function()

↓ここだけ見るとpythonを学習していれば、「いつものやつね」っていう感じです。

def __init__(self,a,b):
    self.a = a
    self.b = b

↓このコードを見たときに「なんでself.cに代入できるの?」と思いました。

def test_fuction(self)
    self.c = "表示したい文字":
    print(self.c)

↓javaで書くとこのようになります。

public int c;
    
public testMethod(int c) {
    this.c = c;
}

pythonのselfはjavaのthisに当たると思います。
this.cのcはフィールド変数にあるcに代入しているが、pythonだとフィールド変数に当たるものがないのでいったいどうなっているんだ状態でした。

ただ答えはすごく単純なものでした。


pythonは変数を定義するとき、型名を明示的に表記せず、変数名の後にそのまま値を代入できます。
そのことからpythonのdefでは引数で変数を定義していなくても、self.cに値を代入できることが推測できます。

まとめ

いかがだったでしょうか。
javaとpythonの変数定義の違いについては慣れていくのが一番だと思います。

他のpython関連の記事も書いておりますので一度ご一読ください。
pythonのurllib.requestとrequestsの違い
pythonでhttpリクエストを送信する方法

コメント

タイトルとURLをコピーしました