Bla*_*Ram 6 python module class
我有:
主要内容:
import music.umm
UMM = music.umm.UMM()
UMM.read_information()
Run Code Online (Sandbox Code Playgroud)
模块脚本:
class UMM(object):
def read_information(self):
..some code
UMM.login()
UMM = UMM()
Run Code Online (Sandbox Code Playgroud)
使用此代码,运行主脚本时出现此错误:
TypeError:'UMM'对象不可调用
我如何解决它?
编辑:
我从模块中删除了这一行:
UMM = UMM()
Run Code Online (Sandbox Code Playgroud)
现在,主脚本运行功能模块,但如果脚本模块转到另一个功能,我会收到此错误:
TypeError:必须使用UMM实例作为第一个参数调用unbound方法login()(没有任何内容)
小智 9
我是这样做的:
# Module Code
class MyClass(object):
def foo(self):
print "Foo"
# Client Code
from MyClass import MyClass
inst = MyClass()
inst.foo()
Run Code Online (Sandbox Code Playgroud)
尽管您提供给我们的信息很少,我仍将尽力提供帮助。
SSCCE可能看起来像
umm.py:
class UMM(object):
def login(self):
print("login()")
def read_information(self):
print("read_info() 1")
UMM.login()
print("read_info() 2")
Run Code Online (Sandbox Code Playgroud)
主要脚本:
import umm
umm = umm.UMM()
umm.read_information()
Run Code Online (Sandbox Code Playgroud)
我没有测试它,但我想这会产生以下异常
TypeError: unbound method login() must be called with UMM instance as first argument (got nothing instead)
Run Code Online (Sandbox Code Playgroud)
原因是该UMM.login()方法希望通过对象的实例进行调用。
在内部read_information(),您拥有self一个具体的对象实例。这样您就可以取代通话
UMM.login()
Run Code Online (Sandbox Code Playgroud)
与
self.login()
Run Code Online (Sandbox Code Playgroud)
为了满足所有依赖关系。
对的调用UMM.login()会尝试在login()没有对象实例进行处理的情况下进行调用。这将适用于@staticmethod或@classmethod,但不适用于常规绑定方法。
| 归档时间: |
|
| 查看次数: |
33150 次 |
| 最近记录: |