Python';属性错误:';功能';对象没有属性';金额';

Python';属性错误:';功能';对象没有属性';金额';,python,attributes,attributeerror,Python,Attributes,Attributeerror,如果这个错误看起来很明显,我深表歉意;我对Python非常陌生 我想写一小部分轮盘赌模拟器。 我的代码当前如下所示: import os import random import copy red = {1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36} black = {2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35} ba

如果这个错误看起来很明显,我深表歉意;我对Python非常陌生

我想写一小部分轮盘赌模拟器。 我的代码当前如下所示:

import os
import random
import copy

red = {1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36}
black = {2, 4, 6, 8, 10, 11, 13, 15, 17, 20, 22, 24, 26, 28, 29, 31, 33, 35}

balance = 512  # we start with 512$


class Bet:
    def __init__(self, color_param, amount_param):
        self.color = color_param
        self.amount = amount_param

    def __repr__(self):
        return "<Bet color:%r amount:%r>" % (self.color, self.amount)


class Result:
    def __init__(self, number_param, color_param):
        self.number = number_param
        self.color = color_param

    def __repr__(self):
        return "<Result number:%r color:%r>" % (self.number, self.color)


def roll():
    result_number = random.randint(0, 36)
    if result_number in red:
        return Result(result_number, "red")
    elif result_number in black:
        return Result(result_number, "black")
    else:
        return Result(result_number, "green")


def bet(result, former_result, former_bet):
    if result.number in red:
        if (former_result is not None) and (former_bet is not None) and (former_result.number in red):
            current_bet = Bet("black", former_bet.amount * 2)
        else:
            current_bet = Bet("black", 1)
    elif result.number in black:
        if (former_result is not None) and (former_bet is not None) and (former_result.number in black):
            current_bet = Bet("red", former_bet.amount * 2)
        else:
            current_bet = Bet("red", 1)
    else:
        current_bet = None
    return current_bet


def main():
    former_result = None
    former_bet = None

    for x in range(0, 10):
        result = roll()
        current_bet = bet(result, former_result, former_bet)

        print(repr(former_result))
        print(repr(former_bet), "\n")

        former_result = copy.deepcopy(result)
        former_bet = copy.deepcopy(bet)

        print(repr(result))
        print(repr(current_bet), "\n")
我得到以下错误:

AttributeError: 'function' object has no attribute 'amount'
到目前为止,谷歌搜索没有发现任何我能理解的东西。 我做错了什么

解决方案

我的意思是
preform\u bet=copy.deepcopy(current\u bet)
而不是
preform\u bet=copy.deepcopy(bet)

你能把完整的追踪发回来吗问题是
preform\u bet
不是你想象的那样。我不认为这句话:
former\u bet=copy.deepcopy(bet)
是你想要的。这使得
former_-bet
指向
bet
函数。这应该是
former\u-bet=copy.deepcopy(current\u-bet)
?@Johnrednex,也许你的意思是
former\u-bet=copy.deepcopy(current\u-bet)
而不是
former\u-bet=copy.deepcopy(bet)
@FamousJameous和@kuro,谢谢你们,这就是解决方案。
AttributeError: 'function' object has no attribute 'amount'