簡體   English   中英

Python創建類的多個實例

[英]Python Creating Multiple Instances of a Class

我正在嘗試創建一個NumPy對象數組,如下所示......

import numpy as np

class Pixel:
    def __init__(self):
        self.r = 0
        self.g = 0
        self.b = 0

class Image:
    def __init__(self):
        self.pixels = np.full((4, 4), Pixel())

if __name__ == '__main__':
    image = Image()
    print(image.pixels)

輸出是......

[[<__main__.Pixel object at 0x02A92F70>
  <__main__.Pixel object at 0x02A92F70>]
 [<__main__.Pixel object at 0x02A92F70>
  <__main__.Pixel object at 0x02A92F70>]]

它似乎創建了同一個對象的數組。 我的問題是如何使用每個像素的不同對象初始化數組?

親切的問候

您可以使用np.array函數並從標准python列表初始化它,如下所示:

class Image:
def __init__(self):
    self.pixels = np.array([Pixel() for i in range(2 * 2)]).reshape([2, 2])

結果如下:

[[<__main__.Pixel object at 0x00000218B89F6438>
  <__main__.Pixel object at 0x00000218B89F64A8>]
 [<__main__.Pixel object at 0x00000218B89F4D68>
  <__main__.Pixel object at 0x00000218B89F43C8>]]

如你所見,它們不是同一個對象。

請注意,它不會影響您的時間復雜度,因為在任何情況下您都需要初始化O(n)對象。

感謝所有的回復,最有幫助。 我發現最適合我的特定情況的方法是使用numpy.empty()方法創建一個正確大小的數組,然后遍歷用新對象填充數組的元素。 它可能不是最有效的,但它對我來說最具可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM