【问题标题】:Define class functions in different source files? [duplicate]在不同的源文件中定义类函数? [复制]
【发布时间】:2018-11-05 08:38:11
【问题描述】:

是否可以(保留所有类功能)在单独的文件中编写类函数?

下面是一个例子:

TestClass.py:

class MyClass():
    def __init__(self, param1=1, param2=2, param3=3):
        self.param1, self.param2, self.param3 =param1, param2, param3,

    def ClassFun1(self, param1=2):
        return param1**2/self.param2

TestClass2.py:

def ClassFun2(self, param1=3):
    return param1*3/self.param2

接下来,在this answer之后,我编译两个文件(我懒得用import),创建一个类变量并尝试使用ClassFun2

x=MyClass()
x.myMethod=ClassFun2
x.myMethod(2)

因此,我收到一个错误,因为 ClassFun2 中的 self 被视为参数,而不是类本身:

AttributeError: 'int' object has no attribute 'param2'

是否可以将类定义拆分为多个源文件?这在 C++ 中是可能的,这在团队合作时实际上非常方便。

【问题讨论】:

  • @RomanKonoval 这是他链接的问题,所以他显然不明白。

标签: python class


【解决方案1】:

变量x 是类的对象,而不是类本身。你需要做的:

x = MyClass
x.myMethod = ClassFun2

请注意,我没有将() 放在MyClass 之后。它返回类本身,它不返回类的实例。

那么你需要创建一个实例来执行该方法:

y = MyClass()
y.myMethod(2)

【讨论】:

  • 是的,我没有理解/仔细阅读我所指的 SO 问题。这解决了我的问题。谢谢
猜你喜欢
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
相关资源
最近更新 更多