TypeError:创建对象实例时无法调用“ NoneType”对象

我正在尝试使用下一堂课:


class GameStatus(object):

"""Enum of possible Game statuses."""

__init__ = None

NotStarted, InProgress, Win, Lose = range(4)

def getStatus(number):

    return{

        0: "NotStarted",

        1: "InProgress",

        2: "Win",

        3: "Lose",

        }

在另一个类中(都在同一个py文件中)。在他的方法init的另一个类中,我做下一件事:


class Game(object):

"""Handles a game of minesweeper by supplying UI to Board object."""

gameBoard = []

gs = ''

def __init__(self, board):

    self.gameBoard = board

    gs = GameStatus() //THIS IS THE LINE

当我尝试运行游戏时,出现下一条错误消息:


File "C:\Users\Dron6\Desktop\Study\Python\ex6\wp-proj06.py", line 423, in __init__

gs = GameStatus()

TypeError: 'NoneType' object is not callable

我究竟做错了什么?


胡子哥哥
浏览 325回答 2
2回答

桃花长相依

您正在将GameStatus初始化程序设置为None:class GameStatus(object):    __init__ = None不要那样做 Python希望这是一种方法。如果您不想使用__init__方法,则根本不要指定它。最多将其设为空函数:class GameStatus(object):    def __init__(self, *args, **kw):        # Guaranteed to do nothing. Whatsoever. Whatever arguments you pass in.        pass如果要创建类似枚举的对象,请查看如何在Python中表示“枚举”?对于Python 2.7,您可以使用:def enum(*sequential, **named):    enums = dict(zip(sequential, range(len(sequential))), **named)    reverse = dict((value, key) for key, value in enums.iteritems())    enums['reverse_mapping'] = reverse    return type('Enum', (), enums)GameStatus = enum('NotStarted', 'InProgress', 'Win', 'Lose')print GameStatus.NotStarted          # 0print GameStatus.reverse_mapping[0]  # NotStarted
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python