質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

6460閲覧

pythonのtype()と.__class__の違い

ythaikaset

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

2グッド

1クリップ

投稿2019/08/14 07:51

知りたいこと

  1. pythonのtype()関数と.__class__属性の違いは何でしょうか?

調べたところtype関数は引数のデータ型を返し、__class__属性を返すということは分かりました。
以下の通りいくつかのデータ型で試してみましたが、よくわかりません。。。
唯一違う返り値を得たのは一番下の整数に上記を用いた場合でした。

  1. 数字リテラルはインスタンスではないのでしょうか?

以下のコードの一番下のように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))
exnjinia👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2019/08/14 08:22 編集

修正: 回答にした方が良いような内容だったので、書き写しました。
guest

回答1

0

class type(object)

class type(name, bases, dict)
引数が1つだけの場合、object の型を返します。返り値は型オブジェクトで、一般に object.__class__ によって返されるのと同じオブジェクトです。

引用元: 組み込み関数 — Python 3.7.4 ドキュメント

Python2.7では違う結果を返すことがありますが、3.xでは気にしなくても良いことです。


Python

print(1.class)
#下記エラー発生
#SyntaxError: invalid syntax

構文解析上の都合で、次のように書けば想定どおり動作します。

Python

1>>> 1.__class__ 2 File "<stdin>", line 1 3 1.__class__ 4 ^ 5SyntaxError: invalid syntax 6>>> 7>>> 1 .__class__ 8<class 'int'> 9>>> (1).__class__ 10<class 'int'>

投稿2019/08/14 08:21

編集2019/11/28 11:23
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2019/11/27 05:51

@低評価を付けた方 回答を再確認しましたが、低評価の理由に思い当たりません。 余地があれば改善しますので、ご指摘のほどよろしくお願いいたします。
LouiS0616

2019/11/28 11:24 編集

低評価が取り消されたようですので、回答を再編集しメッセージを削除しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問