如何在不在命令行中编写类名的情况下调用类方法

时间:2018-10-16 03:28:50

标签: python

这是代码,它只是一个简单的示例:

class func(object):

    def cacul(self, a, b):
        return a+b

    def run_cacul(self, a, b):
        return self.cacul(a, b)

我试图通过在命令行中导入该模块来调用类方法run_cacul()。模块名称为“ foo.py”

import foo

foo.func().run_cacul(2,3)

太长了!!我不想写类名,就像python的系统模块random.py一样,它省略了类名Random()

import random

random.randint(12,23)

代码可能有误,但是我只想知道方法。有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您已在类内部定义了方法,则无需创建对象或引用类,就无法调用该方法。

对于随机示例randint是函数引用

_inst = Random()
randint = _inst.randint
创建Random的

对象,并将randint函数引用存储在randint中。 https://github.com/python/cpython/blob/master/Lib/random.py#L775 对象创建对客户端(我们)是隐藏的。

沿着相似的行,您可以执行以下操作: foo.py

class func(object):

    def cacul(self, a, b):
        return a+b

    def run_cacul(self, a, b):
        return self.cacul(a, b)

obj = func()
run_cacul = obj.run_cacul

那你就可以喜欢

from foo import ran_cacul
ran_cacul(4,5)