Pythonで複素数について調べていると、classの概念がわかっていないことに気づきました。
cf = 2 + 3j
print(cf.real)
print(cf.imag)
print(cf.conjugate())
2.0
3.0
(2-3j)
1行目でcfに複素数2+3jを定義し、2行目で実部、3行目で虚部を出力しています。3行目では共役複素数を計算しています。ところで、realやimagには()がなく、conjugate()には()がついています。conjugate()はメソッドであることはわかりますが、realやimagは何なのか、恥ずかしながらよくわかりませんでした。
英語のpython tutorialを見ると”read-only attributes”、日本語では”読み出し専用属性 “となっています。要するに変数なのでしょうかattributesとpropatyの違いが今一つすっきりしません。ちなみに、realやimagは変更することができません。
cf.real=5 とすると、エラーになってしまいます。このあたりclassの概念をしっかりと勉強する必要がありそうです。