0
我收到以下错误时:类型错误:错误调用元类基础模块
Traceback (most recent call last):
File "/Users/user/repos/prodigy/Sweeper/envsweeper/lib/python2.7/site-packages/nose/loader.py", line 414, in loadTestsFromName
addr.filename, addr.module)
File "/Users/user/repos/dr/Sweeper/envsweeper/lib/python2.7/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/Users/user/repos/prodigy/Sweeper/envsweeper/lib/python2.7/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/Users/user/repos/dr/Sweeper/test.py", line 5, in <module>
from SomethingSubclass import SomethingSubclass
File "/Users/user/repos/dr/Something/SomethingSubclass.py", line 18, in <module>
class SomethingSubclass(SomethingBaseclass):
TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
这是Base
类代码:
import os
import sys
import inspect
from settings import picklePass, masterMap
from decimal import Decimal
CURRENTDIR = os.path.dirname(
os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(CURRENTDIR)
sys.path.insert(0, parentdir)
from libs.pickler.pickler import Pickler
import logging
class BaseClass(object):
def __init__(self, address, fee, msg_body):
self.address = address
self.fee = (fee)
self.msg_body = msg_body
这将是在代码即抛出错误,文件名:SubClass.py
:
import os
import sys
import inspect
import Sweeper
CURRENTDIR = os.path.dirname(
os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(CURRENTDIR)
sys.path.insert(0, parentdir)
from libs.deterministic import electrum_privkey
from libs.transaction import sign, mksend
import logging
sys.path.insert(0, CURRENTDIR)
class SubClass(BaseClass):
def __init__(self, address, fee, msg_body):
BaseClass.__init__(self, address, fee, msg_body)
这就是子类如何实例化的:
....
module = __import__('SubClass')
class_ = getattr(module, 'SubClass')
任何可能出错的线索?
'SomethingSubClass.py'文件来自你的回溯?你为什么使用'class SomethingSubclass.py(...)',这不是有效的Python代码。我在发布的代码中没有看到任何元类。错误的*完整回溯*是什么? –
关于发布的代码有其他问题。为什么所有使用'sys.path'的东西?为什么要使用匹配类名称的模块名称,Python不是Java,模块不必使用与包含它们的类相同的名称;约定是将lower_case_with_underscores用于模块名称(尽可能减少下划线)。 –
然后是'__import__'的使用,而不是直接导入;你可能有这个用例,但它肯定与手头的问题无关;你能不能在这里制作一个[mcve]? –