是否可以将函数作为类方法导入?

时间:2016-06-14 20:51:32

标签: python

我想知道这是否可行。

假设有两个文件。

在a.py中:

class A()

在b.py中:

def x():  
def y():

我想将函数x()从b.py导入a.py的A类,以便A类有一个方法x。

所以我可以像这样使用

test = A()
test.x()

谢谢!

2 个答案:

答案 0 :(得分:2)

如果函数签名不允许将A的实例作为第一个参数传递,那么你可以做的最好就是使它们成为staticmethod

import b
class A:
    x = staticmethod(b.x)
    y = staticmethod(b.y)

test = A()
test.x()

但是,如果您的函数可以将A实例作为第一个参数,那么它只会是:

class A:
    from b import x,y

test = A()
test.x()

答案 1 :(得分:1)

为什么不试试呢?

<强> a.py

class A():
    from b import x, y

a = A()
a.x()

<强> b.py

def x():
    print "Hi, I'm x!"


def y():
    print "Hi, I'm y!"

Yikes,那不起作用!

Traceback (most recent call last):
  File "a.py", line 6, in <module>
    a.x()
TypeError: x() takes no arguments (1 given)

但是这很简单,方法可以将类实例传递给它们!我们只需修改 b.py ...

b.py ,已修改

def x(self):
    print "Hi, I'm x!"


def y(self):
    print "Hi, I'm y!"

执行此操作将打印:

  

嗨,我是x!

请记住在发布之前尝试 - 通常答案就像&#34;是的,只是这样做!&#34; :)