在 ipython 中给出“缺少 1 个必需的位置参数”的简单类定义

Top*_*her 1 python class

这是我的类文件(称为 myclasses.py):

class wave:
    def __init__(self, name = "", xdelta = 1)
        self.name = name
        self.xdelta = xdelta

    def loadbinary(bpath):
        print(bpath)
Run Code Online (Sandbox Code Playgroud)

现在我已经去掉了其他细节(加载二进制文件代码等),当我运行以下命令时,我得到了一个错误输出:

import myclasses
a = myclasses.wave
a.loadbinary('TEST')
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: loadbinary() missing 1 required positional argument: 'bpath'
Run Code Online (Sandbox Code Playgroud)

我试过将 loadbinary 定义更改为“loadbinary(self, bpath)”,但它给出了相同的错误。我也试过用“pass”替换“print”代码,让它什么都不做,但这仍然给我错误。我也试过运行以下命令:

a.loadbinary(bpath='TEST')
Run Code Online (Sandbox Code Playgroud)

...但这将错误更改为:loadbinary() 缺少 1 个必需的位置参数:'self'

在这一点上,我不确定发生了什么。类定义是基本的,不从其他类继承,据我所知,遵循此处显示的类的 Python 文档中的代码:https : //docs.python.org/2/tutorial/classes.html

我使用的是 Python 3.4.3,这发生在运行在 PyCharm 4.5.1 中的 iPython 3.1.0 中。如果我直接在命令提示符(OS X 终端)下在 iPython 3.1.0 中运行它,我会得到以下错误输出:

unbound method loadbinary() must be called with wave instance as first argument (got str instance instead)
Run Code Online (Sandbox Code Playgroud)

Ziz*_*212 5

您从未实例化该类。改为这样做:

class wave:
    def __init__(self, name = "", xdelta = 1)
        self.name = name
        self.xdelta = delta

    def loadbinary(self, bpath):
        print(bpath)
Run Code Online (Sandbox Code Playgroud)

或者...

class wave:
    def __init__(self, name = "", xdelta = 1)
        self.name = name
        self.xdelta = delta

    @staticmethod
    def loadbinary(bpath):
        print(bpath)
Run Code Online (Sandbox Code Playgroud)

然后...

import myclasses
a = myclasses.wave() # the brackets instantiate the class
a.loadbinary('TEST')
Run Code Online (Sandbox Code Playgroud)