【问题标题】:Python: *args behaviour in class methodsPython:类方法中的 *args 行为
【发布时间】:2019-03-05 02:10:49
【问题描述】:

我正在尝试编写一个包装 Python 函数,该函数接受可变数量的位置参数,然后将其处理并从库中输入到主函数中。我在这里创建了一个最小示例来显示我当前面临的问题:

class bar :
    def __init__(self, *args) :
        print(args)
    def foo(self,*args) :
        print(args)

a = bar('name',123,'def')
bar.foo('name',123,'def')

输出是:

('name', 123, 'def')

(123, 'def')

看起来“名称”被分配给foo() 中的self,而不是__init__()。有没有办法解决这个问题?

【问题讨论】:

  • 你为什么要从 bar 类中调用方法?如果你这样做,那么它只是你定义的函数不是方法,因为它没有绑定实例,self只是函数的第一个参数。没什么特别的。这是你应该期待的
  • 是的,我在起草这个例子时犯了一个错误,我的错。

标签: python


【解决方案1】:

当您应该调用实例 a.foo 上的方法时,您正在调用类 bar.foo 上的方法。

a.foo('name',123,'def')

【讨论】:

  • 啊,是的,的确,多么愚蠢的错误。谢谢。当stackoverflow允许我在几分钟内接受时,我会接受这个作为答案。
猜你喜欢
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2020-03-12
  • 2014-04-03
相关资源
最近更新 更多