【问题标题】:Print statement only done once, but using more than one class instance [duplicate]打印语句只完成一次,但使用多个类实例[重复]
【发布时间】:2021-08-24 15:19:04
【问题描述】:

我无法理解此代码以及此类输出背后的概念。我正在创建两个对象,但控制台中只打印了一个“Hello”。我试图通过“id”弄清楚,但两个 id 彼此不同:

class lol:
    print("Hello")        # Output: Hello
                          # 16377072 16378920
h = lol()
k = lol()
print(id(h), id(k))

【问题讨论】:

  • hello 在定义类时打印,而不是在创建对象时打印。
  • 如果你想在创建类实例时做一些事情,把它放在类的__init__()方法中。
  • 定义类时执行类体,而不是实例化它。为什么你会假设print 运行两次?
  • 这能回答你的问题吗? Python method after create an object

标签: python python-3.x


【解决方案1】:

"Hello" 只打印一次: 正如评论中提到的,由于lol 是一个类,所以print 语句仅在评估类定义时执行。

id 是不同的: 您正在检查两个对象 h 和 k 的唯一 ID。由于这些是不同的对象,它们的标识符是唯一的。

【讨论】:

    【解决方案2】:

    类定义中不在方法函数内的任何内容都会在定义类时执行一次。

    当你创建一个类的实例时,它的__init__() 方法被执行(如果你定义了一个)。这就是您应该放置每个实例操作的地方。

    class lol:
        print("defining class")
    
        def __init__(self):
            print("creating instance")
    
    h = lol()
    k = lol()
    print(id(h), id(k))
    

    这应该打印出来:

    defining class
    creating instance
    creating instance
    16377072 16378920
    

    (后面的数字显然会不一样。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多