Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何定义uuu init uuuu,以便它接受Python中其他类的对象集合_Python_Class_Oop - Fatal编程技术网

如何定义uuu init uuuu,以便它接受Python中其他类的对象集合

如何定义uuu init uuuu,以便它接受Python中其他类的对象集合,python,class,oop,Python,Class,Oop,我熟悉Python中的过程编程。然而,我刚刚开始学习python的课程,所以如果你觉得这是一个很难回答的问题,请耐心听我说 我一直在关注Steve F.Lott的书《python中的构建技能》和《面向对象设计中的构建技能》,当他要求我做以下练习时,我陷入了困境: Classname.__init__(self,name,symbol,*blocks) 其中名称和符号是公司的符号。(为了更完整地描述这个问题,我正在研究)。*块应该代表另一个类的集合。到目前为止,我已经尝试过: class Sto

我熟悉Python中的过程编程。然而,我刚刚开始学习python的课程,所以如果你觉得这是一个很难回答的问题,请耐心听我说

我一直在关注Steve F.Lott的书《python中的构建技能》和《面向对象设计中的构建技能》,当他要求我做以下练习时,我陷入了困境:

Classname.__init__(self,name,symbol,*blocks)
其中名称和符号是公司的符号。(为了更完整地描述这个问题,我正在研究)。*块应该代表另一个类的集合。到目前为止,我已经尝试过:

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

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


格雷西亚斯。

你需要理解“继承”和“组合”的概念

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

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

在代码中,
Position
不是一种特殊的
StockBlock
,而是包含一组
StockBlock
。因此,您需要像这样初始化类:

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


注意:Python对缩进非常敏感。代码中有几个缩进错误(
StockBlock.\uuu init\uuuu()
Position.getROI()
)。您必须修复它们,否则Python将无法解析您的脚本。请遵守PEP8中的Python约定:方法名称是带下划线的
小写\u
。必须在
\uuuu init\uuuu
中引入所有属性。方法不是使用属性,而是将元组传递给列表。那不是个错误吗?是代码。@AnkitKulshrestha:访问被拒绝。请将相关部分复制粘贴到您的问题中。我想那是我的私人存储库。不管怎样,我还是能避开这个问题。谢谢你的大力帮助。
def Position(object):
    def __init__(self,name,sym,*blocks):
        self.name=name
        self.sym=sym
        self.blocks=blocks