Python 为什么我的类实例是int类型(我不能访问它的属性)?

Python 为什么我的类实例是int类型(我不能访问它的属性)?,python,abstract-methods,Python,Abstract Methods,我用Python创建了一个只包含抽象方法的类,然后实现了类BasicMR中的所有方法(不是BasicMR的所有代码都出现在代码段中,但是在self.generate\u positions()中调用了方法test\u stational()): 但是,当我创建BasicMR()的实例时,我在这一行得到一个错误: if not isinstance(self.__securities, list): 错误: AttributeError: 'int' object has no attribut

我用Python创建了一个只包含抽象方法的类,然后实现了类
BasicMR
中的所有方法(不是
BasicMR
的所有代码都出现在代码段中,但是在
self.generate\u positions()
中调用了方法
test\u stational()
):

但是,当我创建
BasicMR()
的实例时,我在这一行得到一个错误:

if not isinstance(self.__securities, list):
错误:

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

不知何故,我的BasicMR类实例被识别为类型
int
,我不知道如何处理该错误。

您正在调用类上的
test\u

>>> BasicMR.test_stationary(42)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 20, in test_stationary
AttributeError: 'int' object has no attribute '_BasicMR__securities'

我终于找到了问题的根源。在方法
generate_positions()
中,我调用了instance方法,就好像它是一个类方法,而不是编写

stationarity_checked_securities = self.test_stationary(time_frame)
我有:

stationarity_checked_securities = BasicMR.test_stationary(time_frame)
测试固定()
被定义为:

def test_stationary(self, lb=30):
    #some code here
也就是说,它不是一个类方法,但我调用它就好像它是。
最后,我的错误看起来很简单,但我被错误文本弄糊涂了(我是Python新手,不明白为什么我的类实例在错误中被称为“
int object
”。

但问题是BasicMR类实现了generate_positions()方法(有很多行代码,所以我没有在我的问题的代码片段中复制)。但问题是BasicMR中的generate_positions()有几个参数,而在抽象类中它没有。这可能是个问题吗?我仍然不明白为什么test_Stability()不受约束…@OlegLukianchikov:你从来没有给我们一个最小的例子来重现你的问题,所以我不得不做一些假设。你需要向我们展示更多的代码,至少可以演示你是如何使用对象的。抽象方法签名没有经过验证,不管什么参数
generatePositions()
接受了实现,只是它根本就在那里。是的,我知道没有实际的代码会让人更困惑。但问题是,你关于方法不受约束的回答让我发现了我如何声明方法的问题。起初我认为Python中的抽象方法一定有一些技巧。所以,我很感激你您的答案太多了!这就是为什么您应该始终包含Python错误的完整回溯。它会立即告诉我您在哪里调用unbound方法。:-)
stationarity_checked_securities = BasicMR.test_stationary(time_frame)
def test_stationary(self, lb=30):
    #some code here