小数点の表し方とメソッド呼び出し
第2回Python-FITで
dir(3)で調べると、3はrealというメソッドを持っている。しかし3.realはできない。なぜ?
という質問が出た。
確認してみると
>>> 3.real File "<stdin>", line 1 3.real ^ SyntaxError: invalid syntax
確かにエラーだ。
その時自分も咄嗟には答えられなかったけど、書籍版Pyチュー第1版かなんかに
整数に.をつけると小数点として扱われる。
的なものを思い出した。そこで確認したら、
>>> type(3) <type 'int'> >>> type(3.) <type 'float'>
となった。んで、float型がraalメソッドは持っているかということを確認したら、
>>> dir(3.) ['__abs__', '__add__', '__class__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__int__', '__le__', '__long__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__nonzero__', '__pos__', '__pow__', '__radd__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setformat__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']
問題なくある様子。ということで上記の結果から導き出される事実は、
浮動小数点の表記間違ってるぞゴルァ
ということで怒られているんだろう。正しくは、
>>> int(3).real 3 >>> (3).real 3
2つ目は何をしているかと言うと、ただし()内の演算は行おうとして、何もせず整数の3を返し、realメソッドを呼び出す。という動作(多分