在Python中调用inside函数的函数

时间:2015-05-18 11:26:19

标签: python function python-2.7

我在下面用Python 2.7编写了一些Python代码,我在另一个函数中调用函数表时遇到问题。

Team

如何在Player中调用class CSP: def __init__(self, matrix): self.X = [] self.D = [] self.C = [] self.matrix = util.copyMatrix(matrix) self.counter = 0 # Matrix to Vector vector = [item for line in self.matrix for item in line] chars = map(str, vector) result = ['*' if item == '0' else item for item in chars] def solve(self): """ Returns the result matrix. The sudoku matrix is self.matrix. Use util.printMatrix in purpose of debugging if needed. """ "*** YOUR CODE HERE ***" def init(self,result): for i in range(9): for j in range(1,10): var = var_char[i]+str(j) self.X.append(var) domain = set([1,2,3,4,5,6,7,8,9]) self.D.append(domain) gamelist = result for i in range(len(gamelist)): if(re.match("\d+",gamelist[i])): self.D[i] = set([int(gamelist[i])]) self.set_constraints() ######################################################################### def set_constraints(self): for x in self.X: for y in self.X: if((x[0] == y[0] and x[1] != y[1]) or (x[1] == y[1] and x[0] != y[0])): flag = True for c in self.C: if(x in c and y in c): flag = False if(flag): self.C.append(set([x,y])) for a in [0,3,6]: for b in [0,3,6]: self.set_cube_constraints(a,b) 功能并在init()功能内调用solve()

2 个答案:

答案 0 :(得分:2)

在函数$port = ('5333'); $address = ('127.0.0.1'); $fp = stream_socket_client("tcp://$address:$port", $errno, $errstr, 1); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $in = "function=subscribe|item=THEITEM|schema=last_value"; fwrite($fp, $in."\n"); //while (!feof($fp)) { echo fgets($fp, 1024); //} fclose($fp); } 中,solve()是一个函数,而不是一个方法。因此,只能以与调用任何其他未绑定函数相同的方式调用它:通过向其传递正确数量的参数。这可行:

init()

请注意,您需要在init(self, results) 中明确传递对象的引用,因为self不是方法。在init() solve()内引用self实例,因此这应该有效。

但是,CSP也是正常功能,因此您无法使用set_constraints()init()调用它,但self.set_constraints()应该有效。请注意,您需要在 set_constraints(self)之前声明函数set_constraints() ,否则您将在分配之前获得&#34;&#34;错误。

说了这么多,这太可怕了。为什么不使init()init()类适当的方法?

答案 1 :(得分:0)

set_constraints不是类的一部分,因此无法使用self调用。 如果你把它放一级(删除它的一个缩进级别),那么你的代码应该更好。

我可以看到这是一种编码练习,你被告知要在一个特定的地方编写代码。我认为你的答案可能过于复杂,因为你在这里编写的代码在设计上看起来非常混乱,如果考虑到干净的代码,你应该更多地分解你的功能。