如何制作特定对象的python数组

Moa*_*ghi 4 python arrays types

在java中,以下代码定义了预定义类(myCls)的数组:

myCls arr[] = new myCls
Run Code Online (Sandbox Code Playgroud)

我怎么能在python中做到这一点?我想要一个type(myCls)数组?

提前致谢

Ign*_*ams 7

Python是动态类型的.您不需要(实际上不能)创建仅包含单个类型的列表:

arr = list()
arr = []
Run Code Online (Sandbox Code Playgroud)

如果您要求它只包含一个类型,那么您将不得不创建自己的列表,重新实现列表方法和您__setitem__()自己.

  • 我不认为OP关心数组和列表之间的区别. (2认同)
  • 不,不是.list不关心它包含哪个类.是的,您可以创建一个类似列表,只接受单个类型,或使用array.array,但这些都不是列表. (2认同)
  • @Ignacio:确实,您指定的“不能”声明是错误的。在Python中,您可以创建一个包含单一类型项目的列表;你不能做的是你不能强制列表项为单一类型。 (2认同)

cat*_*try 5

您只能使用数组包创建只有一种类型的数组,但它不是为存储用户定义的类而设计的.

python的方法是创建一个对象列表:

a = [myCls() for _ in xrange(10)]
Run Code Online (Sandbox Code Playgroud)

您可能想看看这个stackoverflow问题.

注意:

小心这个符号,它可能不是你想要的:

a = [myCls()] * 10
Run Code Online (Sandbox Code Playgroud)

这也将创建一个十倍于myCls对象的列表,但它是相同对象的十倍,而不是十个独立创建的对象.