gpt4 book ai didi

python - TypeError: object.__new__() 使用继承时不带参数

转载 作者:行者123 更新时间:2023-11-30 23:54:22 25 4
gpt4 key购买 nike

嘿,我很难实现一些东西,我想这应该不难。我已经阅读了很多帖子,但我仍然无法弄清楚,尽管它可能已经得到解答,而且我可能只是不明白答案:/

所以,我有一个类,在逻辑/中定义一个算法文件 Three_dpll.py 和几个辅助函数

class three_dpll(object):
...
def __extend__(self, symbol, value, mod):
""" __extend__(symbol, value) - extends the model
...
"""

def three_dpll(self, formula, symbols, mod):
""" three_dpll(formula, symbols, mod) - calculates 3-DPLL \n
NOTE: This algorithm should not be overwritten in any derived class!!"""
...
# find unit clause
curr_data = self.__find_unit_clause__(formula, mod)
current_symbol = curr_data[0]
current_symbol_set.add(current_symbol)
current_value = curr_data[1]
if current_symbol != None:
return three_dpll(formula, symbols - current_symbol_set,
self.__extend__(current_symbol, current_value, mod))
...

以及一个应该实现特定逻辑算法的逻辑,我可能会重新定义某些方法,例如来自logics. Three_dpll.py(或任何其他与此相关的辅助函数)

from three_dpll import three_dpll
class kleene_logic(three_dpll):
""" This is the definition of Kleene logic """
pass

现在从另一个文件中的函数调用它:

def satisfiable(logic, formula):
""" satisfiable - \
takes a logic and a set of formula and returns true or false"""
# model is empty dictionary
model = {}
# symbols is a set
symbols = set()
my_logic = "logics."+logic # logic is passed as string to the script
__import__(my_logic, fromlist=['three_dpll'])
log = modules[my_logic]
used_logic = log.kleene_logic()
for clause in formula:
ite = iter(clause)
for literal in ite:
symbols.add(abs(literal))
try:
return used_logic.three_dpll(formula, symbols, model)
except FormulaValid.FormulaValid:
return True

我得到的错误是:

in three_dpll
self.__extend__(current_symbol, current_value, mod)) TypeError: object.__new__() takes no parameters

关于如何解决这个问题有什么想法吗?

最佳答案

您的三_dpll 类也有一个方法三_dpll。当你

return three_dpll(...)

您正在创建该类的实例(而不是调用该方法,这可能是您想要做的)。类(class)没有__init__()可以处理您给出的参数的函数。这就是错误消息告诉您的内容。

你想要的可能是这样的

return self.three_dpll(...)

它将调用该方法。不确定它是否能解决您的问题,但这应该可以解释一些事情。

关于python - TypeError: object.__new__() 使用继承时不带参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com