繁体   English   中英

类型对象没有属性Python

[英]Type Object has no attribute Python

自2.7版本问世以来,我已经很长时间没有用python编码了。 我正在尝试制作一个简单的井字游戏,但是如果我尝试在TicTacToe对象中引用一个属性。 它抛出一个运行时异常,说TicTacToe没有这样的属性。 有任何想法吗?

class TicTacToe(object):

def __init__(self):
    '''
    :return: TicTacToe object
    '''
    self.turn = 1
    self.deckList = [Deck()]
    self.player1 = Player()
    self.player2 = Player()
def validateInput(self, num):
    if type(num) is not int:
        print('Not an integer 0-8')
        return 
    elif num < 0 | num > 8:
        print('Not between 0-8')
        return

def getUserInput(self, turn):
    if turn == 1:
        choice = input('Player 1: Enter 0-8\n')
        #turn = 2
    elif turn == 2:
        choice = input('Player 2: Enter 0-8\n')
        #turn = 1
    return choice

def startGame(self):
    player1Name = input('Player 1: Enter your name\n')
    player2Name = input('Player 2: Enter your name\n')
    self.player1.Player.setName(player1Name)
    self.player2.Player.setName(player2Name)
    player1Mark = input('Player 1: Enter your mark\n')
    player2Mark = input('Player 2: Enter your mark\n')
    if player1Mark == player2Mark:
        print('You both cannot have the same mark\n')
        return
    else:
        self.player1.setMark(player1Mark)
        self.player2.setMark(player2Mark)

    while True:  # Main loop
        choice = self.getUserInput(self.turn)

主要

from TicTacToe import TicTacToe
if __name__ == '__main__':
    game = TicTacToe
    game.startGame(game)
    pass

我这里还有其他课程,玩家课程和Deck(Board)课程

import numpy as np

class Deck(object):
    def __init__(self):
        """
        :return: Deck
        """
        board = np.matrix([-1,-1,-1],[-1,-1,-1],[-1,-1,-1])
        player1Choices = []
        player2Choices = []

    def __str__(self):
        return self.board

class Player(object):

def __init__(self):
    """
    :return: A new Player
    """
    name = None
    mark = None
    statistics = [0, 0, 0]  # [Win, Tie, Lost]

def setName(self, name):
    """
    :param name: Set name of player
    """
    self.name = name
def setMark(self, mark):
    """
    :param mark: Set mark of player
    """
    self.mark = mark
def getScore(self):
    """
    :return: Statistics of player
    """
    score = ((self.statistics[0] * 2) + self.statistics[1] - self.statistics[2])
    return score
def __str__(self):
    """
    :return: String representation of values inside Player
    """
    return "Name: " + self.name + "\nMark: " + self.mark + "\nScore: " + self.getScore() + "\n"
def __cmp__(self, player):
    """
    :param: A Player 
    :return: Winner
    """
    if self.getScore() > player.getScore():
        return self
    elif self.getScore() < player.getScore():
        return player
    else:
        return None
 game = TicTacToe 

构造函数需要括号(和可选参数)。

game = TicTacToe()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM