python - 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”类中分组的方法中做出选择。(我真的需要能够将玩家的动作列表分组到一个专门的类中)
我怎样才能做到这一点?
解决方案
我也认为你有一个错字。get_account()
方法应该是这样的:
def get_account(self):
return self.account_bank
推荐阅读
- apache - .htaccess 文件中“如果主机不是 foo,则重定向到 bar”的正确语法是什么?
- mongodb - 如何对位于mongodb对象下的嵌套数组中的数组进行排序
- python - 如何一起清除多个列表或字典
- javascript - 如何将两个变量存储在二维数组中添加数组传递传递ajax请求
- r - 如何在 dplyr 包中使用权重
- php - 在再次设置之前取消设置会话变量会导致使用时出现“未定义的索引”
- magento - Magento 2 将自定义属性附加到产品名称
- c++ - c++单例实现Meyer's vs call_once
- python - 将 Gnome Builder 与 Python 一起使用
- node.js - 投入生产后,Angular 为 api 提供了错误的 URL