在Python中初始化新实例

Rudziankoŭ

我正在Python上从头到尾编写单元测试。当我注意到我的游戏对象并不能实例化每种方法时,我感到非常困惑。

这里是我在说什么:

def test_satisfactory_field_occupation(self):
        play = tictactoe.Play()
        play.make_move("+", 1, 1)
        self.assertEqual(play.check_satisfaction(1, 1), "Field has been already occupied, try again")

def test_satisfactory_success(self):
        play = tictactoe.Play()
        self.assertEqual(play.check_satisfaction(1, 1), "Ok") 

我发现异常:

FAIL: test_satisfactory_success (__main__.TestPlay)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/sergei_rudenkov/PycharmProjects/hello_world/tic-tac-toe/tictactoe_test.py", line 23, in test_satisfactory_success
    self.assertEqual(play.check_satisfaction(1, 1), "Ok")
AssertionError: 'Field has been already occupied, try again' != 'Ok' 

播放类为:

class Play(object):
    game = [['-', '-', '-'],
            ['-', '-', '-'],
            ['-', '-', '-']]

    move_count = 1
    finished = False

    def __str__(self):
        return "\n".join(map(str, self.game))

    def check_finished(self):
        result = False
        for i in range(2):
            if self.game[i][0] == self.game[i][1] == self.game[i][2] != '-':
                result = self.game[i][0]
            elif self.game[0][i] == self.game[1][i] == self.game[2][i] != '-':
                result = self.game[i][0]
        if self.game[0][0] == self.game[1][1] == self.game[2][2] != '-':
            return self.game[0][0]
        elif self.game[0][2] == self.game[1][1] == self.game[2][0] != '-':
            return self.game[0][2]
        elif not any("-" in row for row in self.game):
            return "Draw"
        else:
            return result

    def make_move(self, sign, x, y):
        self.game[x][y] = sign
        self.move_count += 1
        self.finished = self.check_finished()
        print self

    def check_satisfaction(self, x, y):
        try:
            x, y = int(x), int(y)
        except ValueError:
            return "Please enter integers, try again"
        if not (0 <= x <= 2 and 0 <= y <= 2):
            return "Arguments greater then 2 or less then 0 are not allowed, try again"
        if self.game[x][y] != '-':
            return "Field has been already occupied, try again"
        return "Ok"

    def winner(self):
        if self.finished == '+':
            return "First player (+) has won!"
        elif self.finished == '0':
            return "Second player (0) has won!"
        elif self.finished == 'Draw':
            return "The result is draw!"

请正确理解我:我来自Java,被认为每个方法都有自己的堆栈,但是我所看到的使我感到非常惊奇。有人可以帮我了解发生了什么吗?

用户名
class Play(object):
    def __init__(self):
        self.game = [['-', '-', '-'],
                    ['-', '-', '-'],
                    ['-', '-', '-']]

        self.move_count = 1
        self.finished = False

确保在类的所有其他方法中始终使用self.前缀访问这些成员变量

  • self.game
  • self.move_count
  • self.finished

看一下Python教程:9.3.5。类和实例变量

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Swift中初始化新的NSDocument实例?

来自分类Dev

python实例变量初始化

来自分类Dev

在类php中初始化实例

来自分类Dev

Emberjs中的实例初始化器

来自分类Dev

初始化或实例化

来自分类Dev

通过其方法初始化该类的新实例

来自分类Dev

获取使用新的App Startup API初始化的实例

来自分类Dev

确定guice何时初始化Binder的新实例

来自分类Dev

通过其方法初始化该类的新实例

来自分类Dev

在clang中实例化之后的静态成员初始化

来自分类Dev

使用关键字Args在Python中初始化而不在实例之间共享

来自分类Dev

在实例变量初始化时初始化实例变量

来自分类Dev

Python使用一组初始化类实例

来自分类Dev

在Swift中初始化类实例并访问变量

来自分类Dev

FindBugs:类中的静态实例初始化

来自分类Dev

每个对象初始化中的实例变量都相同

来自分类Dev

实例成员“ widget”无法在初始化程序中访问

来自分类Dev

在Spring中初始化没有任何字段的实例

来自分类Dev

实例成员'setState'无法在初始化程序中访问

来自分类Dev

实例“小部件”无法在初始化程序中访问

来自分类Dev

实例成员“ currentComponentConfiguration”无法在初始化程序中访问

来自分类Dev

rngd-初始化脚本中的多个实例

来自分类Dev

类的实例未在类中初始化IBOutlets

来自分类Dev

如何在Java通用方法中初始化实例

来自分类Dev

如何在初始化程序中获取Router实例

来自分类Dev

使用 Dart 中的类型初始化实例

来自分类Dev

检查Python中的初始化变量

来自分类Dev

了解Python中的初始化

来自分类Dev

在Python中初始化空矩阵