如何定义uuinit uuuuuuuuuu,以便它接受来自Python中其他类的对象集合

2024-03-29 10:58:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我熟悉Python中的过程编程。不过,我刚刚开始学习python的课程,所以如果你觉得这是个没用的问题,请耐心听我说。你知道吗

我一直在关注Steve F.Lott的书《python中的构建技能》和《面向对象设计中的构建技能》,当他让我做以下练习时,我感到困惑:

Classname.__init__(self,name,symbol,*blocks)

其中名称和符号是公司的符号(要更完整地描述问题-this是我正在研究的)。*块应该代表另一个类的集合。到现在为止我都试过这个:

class StockBlock():
"""Define a block of stock"""
    def __init__(self,date,price,nos):
         self.date=date
         self.price=price
      self.nos=nos

    def __str__(self):
        return "%s %d %d" %(self.date,self.price,self.nos)
    def getPurchValue(self):
        self.Purch_val=self.price*self.nos
        return self.Purch_val
    def getSaleValue(self,salePrice):
        self.SalesVal=salePrice*self.nos
        return self.SalesVal
    def getROI(self,salePrice):
        self.SalesVal=salePrice*self.nos
        roi=((self.SalesVal)-(self.Purch_val))/(self.Purch_val)
        return roi
    def getStock(self):
        return self

以及

def Position(StockBlock):
    def __init__(self,name,sym,*blocks):
                super(StockBlock,self).__init__(*blocks)
                self.name=name
                self.sym=sym
    def __str__(self):
             return "Symbol: %s Total Val:%d" %(self.sym,self.totalval)
    def getPurchValue(self):
         self.totalval=0
         for obj in self._stocks:
              self.totalval+=obj.getPurchValue()
         return self.totalval

    def getSaleValue(self,salePrice):
          self.totalsale=0
          for d in self._stocks:
              self.totalsale+=d.getSaleValue(salePrice)
          return self.totalsale
    def getROI(self,salePrice):
       self.roi=(self.getSaleValue()- self.getPurchValue())/self.getPurchValue()
      return self.roi

您能告诉我如何用StockBlock类中的对象列表初始化Position类吗?你知道吗

谢谢。你知道吗


Tags: nameselfdatereturninitdefvalprice
1条回答
网友
1楼 · 发布于 2024-03-29 10:58:59

你需要理解“继承”和“组合”的概念。你知道吗

“卡车”是一种特殊的“汽车”。对于这种关系,可以使用继承:class Truck(Car)。你知道吗

但不管你怎么看,轮子不是汽车。猫有三个或更多的轮子。这是一个部分因此要将车轮添加到汽车类型类中,您需要使用合成。你知道吗

在您的代码中,Position并不是一种特殊的StockBlock,它只是包含一个StockBlock的集合。所以你需要像这样初始化你的类:

def Position(object):
    def __init__(self,name,sym,*blocks):
        self.name=name
        self.sym=sym
        self.blocks=blocks

相关:

相关问题 更多 >