我在下面用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()
?
答案 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调用。 如果你把它放一级(删除它的一个缩进级别),那么你的代码应该更好。
我可以看到这是一种编码练习,你被告知要在一个特定的地方编写代码。我认为你的答案可能过于复杂,因为你在这里编写的代码在设计上看起来非常混乱,如果考虑到干净的代码,你应该更多地分解你的功能。