python中类的输出或类的实例输出为<__main__类名 object at xxxx>这种形式的原因

  • Post category:Python

Python中类的输出形式

在Python中,当我们输出一个类或类的实例时,有时会看到类似于<__main__.ClassName object at 0x7f8c8c6d7c50>这样的输出形式。这是因为Python中的每个对象都有一个唯一的标识符,即对象的内存地址。这个地址是由Python解释器自动分配的,用于标识对象在内存中的位置。当我们输出一个类或类的实例时,Python会默认调用该对象的__repr__()方法,该方法返回一个字符串,其中包含对象的类名和内存地址。

示例一

class MyClass:
    pass

obj = MyClass()
print(obj)

在上述示例中,我们定义了一个名为MyClass的类,并创建了一个该类的实例obj。当我们使用print()函数输出obj时,Python会默认调用obj__repr__()方法,该方法返回一个字符串,其中包含对象的类名和内存地址。

示例二

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person(name='{self.name}', age={self.age})"

p = Person('Alice', 25)
print(p)

在上述示例中,我们定义了一个名为Person的类,并创建了一个该类的实例p。我们在Person类中定义了__repr__()方法,该方法返回一个字符串,其中包含对象的类名、属性名和属性值。当我们使用print()函数输出p时,Python会调用p__repr__()方法,该方法返回一个包含对象信息的字符串。

总之,当我们输出一个类或类的实例时,Python会默认调用该对象__repr__()方法,该方法返回一个字符串,其中包含对象的类名和内存地址。如果我们想要自定义输出形式,可以在类中定义__repr__()方法,返回一个包含对象信息的字符串。