知りたいこと
- pythonのtype()関数と.__class__属性の違いは何でしょうか?
調べたところtype関数は引数のデータ型を返し、__class__属性を返すということは分かりました。
以下の通りいくつかのデータ型で試してみましたが、よくわかりません。。。
唯一違う返り値を得たのは一番下の整数に上記を用いた場合でした。
- 数字リテラルはインスタンスではないのでしょうか?
以下のコードの一番下のようにtype()関数と__class__属性を使った際__class__の方はエラーがでてしまいました。
これは1という整数がインスタンスではないということかと考えました。
※オブジェクト、インスタンスという言葉の違いが分からないので間違った言葉遣いをしていたら申し訳ございません。
python
1print("foo".__class__) 2print(type("foo")) 3#出力はいずれも<class 'str'> 4 5print({1: 2}.__class__) 6print(type({1: 3})) 7#出力はいずれも<class 'dict'> 8 9def foo(): 10 pass 11print(foo.__class__) 12print(type(foo)) 13#出力はいずれも<class 'function'> 14 15class Person(): 16 def __init__(self, name): 17 self.name = name 18foo = Person("foo") 19print(foo.__class__) 20print(foo.__class__) 21#出力はいずれも<class '__main__.Person'> 22 23print(1.__class__) 24#下記エラー発生 25#SyntaxError: invalid syntax 26print(type(1))
修正: 回答にした方が良いような内容だったので、書き写しました。