如何使用同一个函数调用来调用参数不等的两个函数?

2024-04-30 06:14:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个定义,比如

文件x.py:

class x:

    def p(self, a, b) :
        # ...

文件y.py:

^{pr2}$

现在我从另一个文件调用这些函数。具有文件名(在本例中是x和y)的命令行输入被传递到cust变量中。在

文件z.py:

from x import  *
from y import  *

class z:

    cust.p(a, b, c)

作为命令行传递给cust是类z的类变量

现在当cust = x对象时,我得到一个错误:takes exactly 2 arguments (3 given)。在

但是当cust = y对象时,它工作得很好。在

如何消除此错误?在

我不想修改x.py和y.py文件中的函数定义,因为有很多文件。在

如何修改代码,以便在不修改函数定义的情况下从同一个函数调用中调用这两个函数?在


Tags: 文件对象函数命令行frompyimportself
3条回答

根据我对代码和规范的理解(老实说,这不是很清楚),您希望同时从两个文件调用函数,并且您有一个名为cust的变量,通过该变量可以将它们作为方法调用。在

在指定cust是什么之前,我帮不了什么忙。我也不确定x和{}是如何同时存在的。这可能是您想要的:

#file x.py
class x:
    def p(self, a, b):
        ...

#file y.py
class y:
    def p(self, a, b, c):
        ...

#file z.py
from x import *
from y import *
my_x = x()
my_y = y()
a = ...
b = ...
my_x.p(a, b)
my_y.p(a, b, c)

我希望你能更具体地说明你想要什么,这样我就可以帮忙了。在

改变你的方法使第三个参数在两个。。。在

class x:
  def p(a, b, c=None):
    """ c will be ignored. """
    print a, b


class y:
  def p(a, b, c=1234):
    """ c will be used, with a default of 1234. """
    print a, b, c

x().p(1, 2)
x().p(1, 2, 123)
y().p(1, 2)
y().p(1, 2, 123)

蒙克帕奇。在

x.p = lambda self, a, b, c=None: x.p(self, a, b)

相关问题 更多 >