Python:没有变量的类实例化意义是什么

时间:2016-07-14 16:01:56

标签: python oop instantiation instance-variables

为什么我可以

class MyApp(App):
    def build(self):
        return Label(text="Hello World")

MyApp().run()

而不是

    instance = MyApp()

    instance.run()

我对OOP相当新,当我看到以第一个代码片段的方式编写的内容时,我感到非常困惑。这有什么原因让人觉得这么常见吗?

两者之间是否存在功能差异?

2 个答案:

答案 0 :(得分:4)

你在第一个代码块中基本上和第二个代码块做同样的事情。 区别在于,在第一个中,您无法再次重用实例化的MyApp()类

在第二个示例中,您定义了一个可以重用的对象。

修改

正如@arekolek所说:

如果使用MyApp.run()而不是将其分配给变量, Python将在方法run()的调用完成后立即释放对象占用的内存。 < / p>

p.s:我不是python的专业人员可能会弄错......

答案 1 :(得分:0)

它不仅仅是无法重用实例化的MyApp()对象。

使用MyApp.run()而不是将其分配给变量,只要run()调用完成,Python就可以释放对象占用的内存。

在第二个示例中,如果要释放内存,则需要手动del instance。离开已定义instance的块后,内存也将被释放。例如:

def foo():
    instance = MyApp()
    instance.run()

foo()
# Memory freed automatically

instance = MyApp()
instance.run()
del instance

MyApp().run() # No need to clean-up