如何在 Python 中将对象列表实现为实例属性?

马扬100

我是 Python 的 OOP 新手。到目前为止,我一直使用 OOP 语言,如 C++、C# 和 Java。由于我必须将 C# 模块转换为 Python,因此我遇到了概念上的差异。

我有这个 C# 类关系:

 internal class ChirpMeasDataClass
  {
     public ChirpMeasDataClass(List<AntennaLevelDataClass> AntennaLevelData, List<DiffphaseDataClass> DiffphaseData)
     {
        this.AntennaLevelData = AntennaLevelData;
        this.DiffphaseData = DiffphaseData;
     }
     internal List<AntennaLevelDataClass> AntennaLevelData = new List<AntennaLevelDataClass>();
     internal List<DiffphaseDataClass> DiffphaseData = new List<DiffphaseDataClass>();
  }
  internal class AntennaLevelDataClass
  {
     internal double dLevel =  -10000;          // [dB]
     internal double dVarianzLevel = -10000;  // [dB^2]
  }
  internal class DiffphaseDataClass
  {
     internal double dDiffPhase = -10000;         // [°] 
     internal double dVarianzDiffPhase = -10000; // [°^2] 
  }

在 python 中直观地想到的是有这样的东西:

class AntennaLevelDataClass:
    def __init__(self):
        self.dLevel = -10000  # [dB]
        self.dVarianzLevel = -10000  # [dB ^ 2]

class DiffPhaseDataClass:
    def __init__(self):
        self.dDiffPhase = -10000 # [°]
        self.dVarianzDiffPhase = -10000 # [° ^ 2]

class ChirpMeasDataClass:
    def __init__(self,AntennaLevelDataClass,DiffPhaseDataClass):
       self.antennaLevelDataList=AntennaLevelDataClass
       self.diffPhaseDataList=DiffPhaseDataClass

或类似的东西:

   class ChirpMeasDataClass:
        def __init__(self,antennaLevelDataClass,diffPhaseDataClass):
           self.antennaLevelDataList=[]
           self.diffPhaseDataList=[]

将对象列表作为类中的属性(Python 中的实例属性)的常用方法是什么?

雷姆科·格利希

如果你这样做

self.antennaLevelDataList=AntennaLevelDataClass

然后self.antennaLevelDataList是一个实例变量,它的值就是那个类定义这似乎不是很有用。

此外,您将两个类定义传递给构造函数。

使用列表(其中的内容恰好是这些类的实例)要简洁得多,而且 C++ 也使用列表,因此它主要是直接等效的。唯一的区别是,在 C++ 中,您必须声明列表内容的类型,而在 Python 中则不能。

在构造函数中,复制传入的列表的内容可能很有用,例如:

class ChirpMeasDataClass:
    def __init__(self, antennaLevelData, diffPhaseData):
        self.antennaLevelDataList = anntennaLevelData[:]
        self.diffPhaseDataList = diffPhaseData[:]

[:]表示整个列表的一个切片,实际上是一个浅拷贝)

关键是,否则实例属性引用与传入的相同的列表对象,如果复制一个,可能会导致意外;在 Python 中没有任何隐式复制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中枚举对象的属性?

如何在Java中将迭代器实现为类的属性

如何在python中将对象数组转换为普通数组

phoenix框架如何在模板中将对象呈现为json

如何使用反射将对象添加到类的实例的通用列表属性

如何在ROS中将python“列表列表”发布/订阅

如何在不实例化Python中的对象的情况下打印类属性?

如何在JS中将对象转换为数组列表

Python3和Asyncio:如何将WebSocket服务器实现为Asyncio实例?

如何在Python中将嵌套列表拆分成几个列表?

如何在Python中将对象数组保存到文件

如何在Python 3中的同一图上绘制多个对象的实例属性

如何在python 3中将对象加入优先队列或从优先队列中出队

如何在Python中将对象的JSON数组更改为多维数组

如何在python中将python列表转换为pandas Dataframe

如何在Python中将包含Timesamp对象的字典值列表转换为datetime对象?

如何在python中将字典列表追加到相同列表?

如何在three.js中将对象呈现为“图标”?

如何在python中实现引用列表?

如何在webAPi中将对象列表获取到JSon

如何在python中将对象重新分配给变量?

如何在Python中将对象作为字典键传递(TestComplete问题?)

如何在python jupyter中将对象类型转换为datetime64[ns]?

如何在python数据框中将对象数据类型转换为浮点数

如何在Python中修改实例属性而不是类属性

如何在 Python 中将对象类的实例化定义为全局变量?

如何在 Python 中将对象类型的变量更改为布尔类型?

如何在python中将对象列表转换为稀疏矩阵?

如何在python中将对象添加为另一个对象的字段