Python でクラスのオブジェクトを出力する
-
Python で
__repr__()メソッドを使用してオブジェクトを出力する -
Python で
__str__()メソッドを使用してオブジェクトを出力する - 新しいクラスメソッドを追加して Python でオブジェクトを出力する
このチュートリアルでは、Python でクラスオブジェクトを出力するための複数のメソッドを調べます。オブジェクトのデータや値を表示するように、print() 関数を使用してクラスインスタンスを出力するとします。以下に説明する方法を使用してこれを行うことができます。
Python で __repr__() メソッドを使用してオブジェクトを出力する
__repr__() メソッドは、オブジェクトの出力可能な表現を文字列の形式で返します。デフォルトでは、オブジェクトのクラスの名前とオブジェクトのアドレスを返します。
print() 関数を使用して Python でオブジェクトを出力すると、オブジェクトの __str__() メソッドが呼び出されます。定義されていない場合、__str__() は __repr__() メソッドの戻り値を返します。そのため、print() 関数を使用してユーザー定義クラスのオブジェクトを出力しようとすると、__repr__() メソッドの戻り値が返されます。
したがって、__repr__() メソッドを定義またはオーバーライドして、オブジェクトの要約または目的の値を出力できます。
__repr__() メソッドのないユーザー定義クラス ClassA があるとすると、以下のサンプルコードは、__repr__() メソッドのない ClassA のオブジェクトを出力しようとしたときの出力を示しています。
class classA:
def __init__(self):
self.var1 = 0
self.var2 = "Hello"
A = classA()
print(A)
出力:
<__main__.classA object at 0x7fa29aa28c50>
__repr__() メソッドを定義していないため、デフォルトでクラスの名前とオブジェクトのアドレスが返されます。
それでは、クラス classA の __repr__() メソッドを定義してから、print() 関数を使用しましょう。print() と print(repr()) は同じ値を返す必要があります。
class classA:
def __init__(self):
self.var1 = 0
self.var2 = "Hello"
def __repr__(self):
return "This is object of class A"
A = classA()
print(A)
print(repr(A))
出力:
This is object of class A
This is object of class A
Python で __str__() メソッドを使用してオブジェクトを出力する
__str__() メソッドは、Python でオブジェクトの文字列バージョンを返します。オブジェクトに __str__() メソッドがない場合、__repr__() メソッドと同じ値を返します。
上記のサンプルコードで見たように、__str__() メソッドが定義されていない場合、print() メソッドは __repr__() メソッドを使用してオブジェクトの出力可能な表現を出力します。
次に、サンプルクラス ClassA の __str__() メソッドを定義してから、print() 関数を使用して classA のオブジェクトを出力してみましょう。print() 関数は、__str__() メソッドの出力を返す必要があります。
class classA:
def __init__(self):
self.var1 = 0
self.var2 = "Hello"
def __repr__(self):
return "This is object of class A"
def __str__(self):
print("var1 =", self.var1)
print("var2 =", end=" ")
return self.var2
A = classA()
print(A)
出力:
var1 = 0
var2 = Hello
新しいクラスメソッドを追加して Python でオブジェクトを出力する
クラスの __str__() メソッドと __repr__() メソッドをオーバーライドまたは定義する代わりに、別のアプローチを使用できます。新しい print()メソッドをクラス内に記述できます。これにより、選択したクラスの属性または値が出力されます。
以下のサンプルコードは、object.print() メソッドを定義して使用し、Python でオブジェクトを出力する方法を示しています。
class classA:
def __init__(self):
self.var1 = 0
self.var2 = True
self.var3 = "Hello"
def print(self):
print("var1 =", self.var1)
print("var2 =", self.var2)
print("var3 =", self.var3)
A = classA()
A.var2 = False
A.print()
出力:
var1 = 0
var2 = False
var3 = Hello