关于python类的问题

实例化之后为什么打印的结果有的是一样的 有的是不一样的?
1.为什么分开print输出和在一个print里输出的结果不一样?

print(a(1))
print(b(1))
print(c(1))
print(a(1), b(1), c(1), sep="\n")


#输出:
#<__main__.Test1 object at 0x000001B74DA95288>
#<__main__.Test2 object at 0x000001B74DA95288>
#<__main__.Test3 object at 0x000001B74DA95288>
#<__main__.Test1 object at 0x000001B74DA95288>
#<__main__.Test2 object at 0x000001B74DA95348>
#<__main__.Test3 object at 0x000001B74DA95308>

2.为什么下面这种方式的实例化和上面1中实例化输出的结果不一致

print(d, e, f, sep="\n")

#输出:
#<__main__.Test1 object at 0x000001B74DA95288>
#<__main__.Test2 object at 0x000001B74DA95348>
#<__main__.Test3 object at 0x000001B74DA95308>

完整脚本


# -*- coding: utf-8 -*-

class Test1:
    def __init__(self, x):
        self.x = x
    def outprint(self):
        return self.x

class Test2:
    def __init__(self, x):
        self.x = x
    def outprint(self):
        return self.x

class Test3(object):
    def __init__(self, x):
        self.x = x
    def outprint(self):
        return self.x

a = Test1
b = Test2
c = Test3
print(a, b, c, sep="\n")
print(a(1))
print(b(1))
print(c(1))
print(a(1), b(1), c(1), sep="\n")

d = Test1(1)
e = Test2(1)
f = Test3(1)
print(d, e, f, sep="\n")

这个应该和python的内存管理机制有关,你可以学习一下python的内存管理机制,应该能解答你的疑惑

你为什么要纠结每个类占用什么地址
outprint函数定义了但是根本没有用上呀
你一个类实例化之后就丢弃了,没有变量来承接它,那它的内存当然就被后续的实例给复用了
而如果一个print里同时实例3个对象,那当然是没法复用的