提问人:Chinmay Sahoo 提问时间:4/6/2023 最后编辑:KacheChinmay Sahoo 更新时间:4/11/2023 访问量:186
'print(some_object)' 的输出是什么意思?
What does the output from `print(some_object)` mean?
问:
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'>
答:
0赞
Kache
4/6/2023
#1
以您的示例为例: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赞
CtrlZ
4/6/2023
#2
我将尝试通过示例进行解释。代码如下:
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'>
如果我们将这个脚本(我们称之为 foo.py)作为 python foo.py 运行,那么我们的模块(分配给 __name__ 的值)将被__main__
在 p1 中,我们实例化了 Apple 的一个实例。print() 将尝试找到 __str__ dunder 方法的实现。如果它存在,它将执行它并发出返回的值。如果__str__不可用,它将查找__repr__并采取类似的行为。如果两者都不可用,它将显示模块名称、类名称及其 ID。这就是我们在第一行输出中看到的。
在 p2 中,我们正在打印类 - 而不是该类的实例。因此,没有要调用的 dunder 方法,我们只是看到它是 __main__ 模块中一个名为 Apple 的类。
在 p3 中,我们正在打印一个 Banana 类的实例,该类实现了__str__因此输出“我是香蕉”,如前所述。
在 p4 中,我们只是打印了该类,尽管它__str__实现,但这无关紧要,因为它不是该类的实例
评论
print(Apple())
print(Apple)
()