首页 > 解决方案 > Python中类之间的循环继承

问题描述

我想将玩家可以执行的动作分组到一个名为“动作”的类中。这些操作包括在玩家购买或出售某物时更新玩家的银行账户余额。这意味着能够从“Action”类调用“Player”类的“get_account”方法。为此,我通过编写在这两个类之间添加了遗传性的概念 class Action (Player):

这是我的完整代码

from typing import Any


class BankAccount:
    name: str
    balance: float

    def __init__(self, name: str, balance: float) -> None:
        self.name = name
        self.balance = balance


class Player(Action):
    name: str

    def __init__(self, **kwargs: Any) -> None:
        self.name = kwargs['name']
        self.account_bank = None

    def set_account(self, name, balance) -> None:
        self.account_bank = BankAccount(name, balance)

    def get_account(self) -> BankAccount:
        return self.account

    def action(self, choice, price):
        if choice == 1:
            self.buy_something(price)
        if choice == 2:
            self.sell_something(price)
        else:
            pass


class Action(Player):
    def buy_something(self, price):
        self.get_account().balance -= price

    def sell_something(self, price):
        self.get_account().balance += price


kwargs = {'name': 'jason'}
jason = Player(**kwargs)  # Create player 'jason'
jason.set_account('my_account', 100)  # Adds Jason an account with $ 100

jason.action(1, 20)  # buy something for 20 dollars
jason.action(2, 15)  # sell something for 15 dollars

我的问题是我还需要能够从“播放器”类中调用“动作”类的方法。事实上,“Player”类有一个“action”方法,它允许您在“Action”类中分组的方法中做出选择。(我真的需要能够将玩家的动作列表分组到一个专门的类中)

我怎样才能做到这一点?

标签: pythonpython-3.xclassinheritancemethods

解决方案


我也认为你有一个错字。get_account()方法应该是这样的:

    def get_account(self):
        return self.account_bank

推荐阅读