我正在使用python .trying学习OOP和小型控制台应用程序Stock。
class Stock(object):
def __init__(self, stockName, stockLimit, inStock, rentPrice):
self.stockName = stockName # private
self.stockLimit = stockLimit # private
self.inStock = inStock # private
self.rentPrice = rentPrice # private
def inputStock(self, nProduct):
if(nProduct >= (self.stockLimit - self.inStock)):
self.inStock = self.stockLimit
else:
self.inStock += nProduct
def invoice(self, nDay):
return self.rentPrice * nDay
class StockProduct(Stock):
def __init__(self, factor):
# the base-class constructor:
Stock.__init__(self, stockName, stockLimit, inStock, rentPrice)
self.factor = factor # Extra for this stock
def invoice(self, nDay):
return Stock.invoice(self, nDay) * self.factor
class StockMaterial(Stock):
def __init__(self,factor):
# the base-class constructor:
Stock.__init__(self, stockName, stockLimit, inStock, rentPrice)
self.factor = factor # Extra for this stock
def invoice(self,nDay):
return Stock.invoice(self, nDay)*self.factor
if __name__ == "__main__":
N = nDay = 0
myStock = Stock("stock111", 500, 200, 400000)
N = float(raw_input("How many product into stock: "+str(myStock.stockName)+" ? "))
myStock.inputStock(N)
nDay = int(raw_input("How many days for rent : "+str(myStock.stockName)+" ? "))
print "Invoice for rent the stock: "+str(myStock.stockName)+ " = "+ str(myStock.invoice(nDay))
StockProduct = StockProduct("stock222",800, 250, 450000, 0.9)
N = float(raw_input("How many product into stock: "+str(StockProduct.stockName)+" ? "))
StockProduct.inputStock(N)
nDay = int(raw_input("How many days for rent : "+str(StockProduct.stockName)+" ? "))
print "Invoice for rent the stock: "+str(StockProduct.stockName)+ " = "+ str(StockProduct.invoice(nDay))我有两个问题:
invoice,如何在python中进行方法重载?StockProduct = StockProduct("stock222",800,250,450000,0.9) TypeError错误:__init__()恰好有2个参数(6给定)
我应该在这里做什么?
有人能帮我吗?
提前感谢
发布于 2011-04-15 20:26:58
invoice应该可以正常工作。类StockProduct(股票):def __init__(self,stockName,stockLimit,inStock,rentPrice,factor):#基类构造函数: Stock.__init__(self,stockName,stockLimit,inStock,rentPrice) self.factor = factor def发票(self,nDay):返回Stock.invoice(self,nDay) * self.factor
发布于 2011-04-15 20:23:21
是的,您可以在python中执行方法重载。
2-您的子类更改了方法签名。你应该宣布它为
def __init__(self, stockName, stockLimit, inStock, rentPrice, factor):如果您想用父类的所有参数再加上一些额外的参数来构造它。
https://stackoverflow.com/questions/5681970
复制相似问题