`print(some_object)` 的输出是什么意思?

问题描述 投票:0回答:4

Python 代码输出的含义是什么:

<class 'mediapipe.python.solution_base.SolutionOutputs'>

这是否意味着我们正在打印“mediapipe.python.solution_base.SolutionOutputs”类的对象?我的意思是,例如,如果我声明一个类:

class Apple():
    def __init__(self):
        self.x = 45

    def temp(self):
        pass

然后我创建一个这个类的对象,

a = Apple()

然后如果我打印一个,比如

print(a)

我应该得到,

<class 'Apple'>
python class object variables output
4个回答
1
投票

我会试着举例说明。这是代码:

class Apple():
    ...

class Banana:
    def __str__(self):
        return 'I am a banana'

print(Apple()) # p1
print(Apple) # p2

print(Banana()) # p3
print(Banana) # p4

...这是输出:

<__main__.Apple object at 0x10afa4950>
<class '__main__.Apple'>
I am a banana
<class '__main__.Banana'>

如果我们以 python foo.py 的形式运行这个脚本(让我们称之为 foo.py)那么我们的模块(分配给 __name__ 的值)将是 __main__

在 p1 中,我们实例化了一个 Apple 实例。 print() 将尝试找到 __str__ dunder 方法的实现。如果它存在,它将执行它并发出返回值。如果 __str__ 不可用,它将查找 __repr__ 并表现类似。如果两者都不可用,它将显示模块名称、类名称及其 ID。这就是我们在第一行输出中看到的。

在 p2 中,我们正在打印类 - 而不是该类的实例。因此,没有 dunder 方法被调用,我们只是看到它是 __main__ 模块中一个名为 Apple 的类。

在 p3 中,我们正在打印 Banana 类的一个实例,它实现了 __str__ 因此输出“我是香蕉”,如前所述。

在 p4 再次,我们只是打印类,尽管它实现了 __str__ 但这无关紧要,因为它不是该类的实例


0
投票

用你的

Apple
例子:

class Apple:
    pass

a = Apple()

print(a)  # printing an instance of a class by using `a.__str__()`
#=> <__main__.Apple object at 0x11b02b6d0>

print(Apple)  # printing the class itself
#=> <class '__main__.Apple'>

a.__str__()
默认情况下返回一个带有类的字符串,它是一个对象,以及它存储的内存地址。


-1
投票

是的,没错。输出表明您正在处理 Python

SolutionOutputs
模块中的
mediapipe.python.solution_base
类的对象。

Python中的

class
关键字用于定义一个新的类,你看到的输出是告诉你你正在打印的变量或对象属于那个类。
mediapipe.python.solution_base.SolutionOutputs
类可能定义了一组方法和属性,您可以使用这些方法和属性与对象进行交互和操作。

如果想详细了解

SolutionOutputs
类以及它定义了哪些方法和属性,可以参考
mediapipe
库的文档或者直接查阅源码。


-1
投票

当您使用

print()
函数在 Python 中打印对象时,它会显示该对象的字符串表示形式。您从
print(some_object)
看到的输出表示对象的类型
some_object
.

在您的示例输出中

print(some_object)
产生
<class 'mediapipe.python.solution_base.SolutionOutputs'>
,这意味着变量
some_object
##Heading ##SolutionOutputs
模块中
'mediapipe.python.solution_base'
类的一个实例。

在您的示例代码中,如果您打印

Apple
类的实例,
print(a)
不会给您
<class 'Apple'>
。相反,你会得到像
<__main__.Apple object at 0x00000123456789AB>
这样的东西,这表明 a 是
Apple
类的一个实例,并显示它存储的内存位置。如果你想打印班级的名字,你可以这样做:

print(type(a).__name__)

这会给你输出

Apple
.

© www.soinside.com 2019 - 2024. All rights reserved.