📜  在Python中打印类的对象

📅  最后修改于: 2022-05-13 01:55:01.362000             🧑  作者: Mango

在Python中打印类的对象

对象是类的实例。一个类就像一个蓝图,而一个实例是具有实际值的类的副本。当一个类的对象被创建时,该类被称为实例化。所有实例共享类的属性和行为。但是这些属性的值,即状态对于每个对象都是唯一的。一个类可以有任意数量的实例。

打印对象为我们提供了有关我们正在使用的对象的信息。在 C++ 中,我们可以通过为类添加一个友ostream&运算符<< (ostream&, const Foobar&)方法来做到这一点。在Java中,我们使用toString()方法。在Python中,这可以通过使用__repr____str__方法来实现。如果我们需要详细的调试信息,则使用__repr__ ,而__str__用于为用户打印字符串版本。

例子:

# Python program to demonstrate
# object printing
  
  
# Defining a class
class Test: 
    def __init__(self, a, b): 
        self.a = a 
        self.b = b 
      
    def __repr__(self): 
        return "Test a:% s b:% s" % (self.a, self.b) 
    
    def __str__(self): 
        return "From str method of Test: a is % s, " \ 
              "b is % s" % (self.a, self.b) 
  
# Driver Code         
t = Test(1234, 5678) 
  
# This calls __str__() 
print(t) 
  
# This calls __repr__() 
print([t])

输出:

From str method of Test: a is 1234, b is 5678
[Test a:1234 b:5678]

关于印刷的要点:

  • 如果没有__str__方法, Python使用__repr__方法。

    例子:

    class Test: 
        def __init__(self, a, b): 
            self.a = a 
            self.b = b 
        
        def __repr__(self): 
            return "Test a:% s b:% s" % (self.a, self.b) 
        
    # Driver Code         
    t = Test(1234, 5678) 
    print(t)
    

    输出:

    Test a:1234 b:5678
    
  • 如果没有定义 __repr__ 方法,则使用默认值。

    例子:

    class Test: 
        def __init__(self, a, b): 
            self.a = a 
            self.b = b 
        
    # Driver Code         
    t = Test(1234, 5678) 
    print(t)  
    

    输出:

    <__main__.Test object at 0x7f9b5738c550>