这是我的类文件(称为 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)
您从未实例化该类。改为这样做:
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)