我是 Python 的新手,想了解 OOP。在我的程序中,我希望用户能够买卖股票,但我正在努力实现此功能。很抱歉,如果问题微不足道。
用户类+它的一个对象
class User:
def __init__(self, name, budget=None, stocks=None):
self.name = name
self.budget = budget or 1000
self.stocks = stocks or 0
def sell_stock(self):
if self.stocks != 0:
self.stocks -= 1
def buy_stock(self):
self.stocks += 1
u1 = User("Karin", stocks=9)
股票类别+它的一个对象
class Stock:
def __init__(self, price, name, availability=None):
self.price = price
self.name = name
self.availability = availability or 1
s1 = Stock("200", "Netflix")
我想编写一个名为 buy_stock() 的方法来执行以下操作:
- u1.budget - s1.price
- u1.stocks += 1
- s1.availability -= 1
- 将显示用户持有的股票的价格和名称 买了,所以我会看到一条消息 f"{Karin} has bought {Netflix} {200} 美元的库存。”
请您参考如下方法:
class Stock:
def __init__(self, price, name, availability=1):
self.price = price
self.name = name
self.availability = availability
class User:
def __init__(self, name, budget=1000,):
self.name = name
self.budget = budget
self.stocks = []
def sell_stock(self, stock):
try:
self.stocks.remove(stock)
stock.availability += 1
self.budget += stock.price
print('{} has sold {} stock for {} dollars'.format(self.name, stock.name, stock.price))
except:
pass
def buy_stock(self, stock):
if self.budget - stock.price >= 0 and stock.availability >= 1:
self.stocks.append(stock)
stock.availability -= 1
self.budget -= stock.price
print('{} has bought {} stock for {} dollars'.format(self.name, stock.name, stock.price))
s1 = Stock(200, "Netflix")
s2 = Stock(300, "SomeStock", availability=2)
u1 = User("Karin", budget=10000)
u1.buy_stock(s2)
u1.sell_stock(s2)
u2 = User("Sam")
u2.buy_stock(s2)
u2.buy_stock(s1)
输出:
Karin has bought SomeStock stock for 300 dollars
Karin has sold SomeStock stock for 300 dollars
Sam has bought SomeStock stock for 300 dollars
Sam has bought Netflix stock for 200 dollars
当您购买商品时,您必须确保它可用并且您有预算。我从构造函数中删除了股票参数以避免重复,并且逻辑 buy_stock 只有一个来源。最后一点:您不需要 或 键,因为您可以在构造函数中设置默认值。
