【问题标题】:Run a class without assigning an object to it in python?在python中运行一个类而不给它分配一个对象?
【发布时间】:2017-09-13 12:38:12
【问题描述】:
class Run(object):

    def run(self):
        print('run, save yourself')

Run().run()

打印出来

'跑,救自己'

我们如何在不定义对象的情况下运行类及其函数?

我们必须为类分配一个对象,然后像这样运行它

r = 运行()

r.run()

python是否会自动将abject分配给Class然后运行它?

【问题讨论】:

标签: python python-2.7 python-3.x class


【解决方案1】:

这是运行 Run().run() 时发生的情况:

1- Run() 创建一个 Run 对象
2- 反过来,这个对象自己调用它的方法run()

这相当于:

r = Run()
r.run()

除了在您的情况下,您的对象 Run() 被创建,然后在执行 run() 方法之后立即进行垃圾收集,因为没有任何指向它。

【讨论】:

  • 所以我们可以直接在任何类内部运行类函数而不用将其分配给对象,python会临时创建一个对象然后删除它?
  • 是的,你可以创建“一次性”对象,不分配给任何变量,直接调用它们的方法。
【解决方案2】:

如果您希望无需调用 run 即可运行课程,您可以尝试这样的方法

class Run(object):
    def __init__(self):
        self.run()

    def run(self):
        print('run, save yourself')

Run()
>>> run, save yourself

对此进行扩展,您也可以这样做

class Run(object):
    def __call__(self):
        self.run()

    def run(self):
        print('run, save yourself')

r = Run()
r()
>>> run, save yourself

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多