Pythonのobject関数とは何か?分かりやすく解説する

スポンサーリンク

ようこそ皆さん!今日のチュートリアルでは、Pythonのobject()メソッドとクラスについて説明します。

それでは、Pythonのオブジェクト()`メソッドの基本的な定義と構文から始めましょう。

スポンサーリンク

Python の object() メソッド

Python の object() メソッドは、呼び出されると object クラスの新しい無機能オブジェクトを返します。


このメソッドは引数を必要としません。

object() メソッドを使うためのシンタックスは以下のとおりです。

obj = object()

ここで、obj は、すべてのクラスのデフォルトである組み込みのプロパティとメソッドを保持する、特徴のないオブジェクトになります。

一般的に、Pythonの object クラスは、ユーザー定義クラスを含むすべてのクラスの基底クラスとして機能します。

したがって、すべてのクラスはPythonのObjectクラスを継承しています。

これはPython 3.xのバージョンではデフォルトのケースです。

しかし、Python 2.xのバージョンでは、新しいスタイルのクラスを定義するために、以下のように明示的にクラスをオブジェクトクラスから継承させる必要があります。

class my_class(object):
     ...

Python object() メソッド – サンプルプログラム

オブジェクトクラスと object() メソッドについて、それなりの知識を得たところで、より明確なイメージを得るためにサンプルに飛び込んでみましょう。

#object() object
obj = object()
 
print("obj = ", obj)
print("Type of obj = ", type(obj))
print(dir(obj)) #attributes of obj

結果は以下の通りです。

出力:

obj =  <object object at 0x01374040>
Type of obj =  <class 'object'>
['class', 'delattr', 'dir', 'doc', 'eq', 'format', 'ge', 'getattribute', 'gt', 'hash', 'init', 'init_subclass', 'le', 'lt', 'ne', 'new', 'reduce', 'reduce_ex', 'repr', 'setattr', 'sizeof', 'str', 'subclasshook']

ここでは、object() メソッドを使って新しいオブジェクト obj を作成し、その型とすべての属性をそれぞれ type() メソッドと dir() メソッドを使って決定しているだけです。

上の出力から、obj が object クラスに属していることがはっきりとわかります。

なお、obj は __dict__ 属性を持っていません。

従って、object クラスのインスタンスに任意の属性を割り当てることはできません。

Python object() メソッドのプロパティ

このセクションでは object のプロパティのいくつかを見て、その使い方を調べ、実際に遊んでみることにします。

class demo():
    a = 10
    b = 20
 
#declaring object of user-defined class
d1 = demo()
 
#featureless objects
d2 = object()
d3 = object()
 
print("d2 == d3? ", d2 == d3)
print("issubclass(demo, object)? ", issubclass(demo, object)) #demo inherites from object class
print("isinstance(d1, object)? ", isinstance(d1, object))
print("Type of d2 = ", type(d2))
print(d2)

結果は以下の通りです。

Object Output
Output

上のコードでは、demo はユーザー定義のクラスで、いくつかの値 a と b を持ちます。

一方、d2d3object() メソッドで生成されたオブジェクトクラスの空のオブジェクトです。

上の出力から明らかなように、d2 と d3 は同じ型の 2 つの空のオブジェクトですが、 d2==d3 の条件は満たされていません。

再び、 demo クラスと d1 オブジェクトに対して、それぞれ issubclass() と isinstance() メソッドを使用すると、次のように推測することができます

  1. demo クラスは object クラスのサブクラスであり、それを継承している。
  2. そして、d1 (demo object) も object クラス (ベースクラス) のインスタンスです。

また、空のオブジェクトを直接表示することはできないので、 <object 0x007c4040="" at="" object=""> と表示されることもわかります。

サミングアップ

このトピックは以上です。

より詳細な情報については、以下の参考文献を参照されることを強くお勧めします。

このトピックに関する更なる質問は、以下のコメント欄からどうぞ。

それでは、よいお年を。

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