Python列表是一种极为常见的数据结构,它允许我们将多个值存储在同一个对象中。列表中的每个值都有一个唯一的索引,我们可以使用该索引来访问它。列表中的值可以是任何类型,包括数字、字符串、其他列表等。在本文中,我们将探讨如何在Python列表中使用类。
1. 在列表中存储类的实例
我们可以在Python列表中存储类的实例。例如,下面的代码创建了一个名为Person的类,并将3个Person实例存储在一个列表中:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Alice", 25)
p2 = Person("Bob", 30)
p3 = Person("Charlie", 35)
people = [p1, p2, p3]
```
现在,我们可以使用列表索引来访问列表中的每个Person实例:
```python
print(people[0].name) # 输出Alice
print(people[1].age) # 输出30
```
我们还可以通过循环遍历整个列表来访问所有Person实例:
```python
for person in people:
print(person.name, person.age)
```
2. 利用列表推导式创建类的实例
除了手动创建列表并逐个添加类的实例之外,我们还可以使用列表推导式(List comprehension)来创建包含类的实例的列表。例如,下面的代码使用列表推导式创建一个包含10个Person实例的列表:
```python
people = [Person("Alice", 25) for i in range(10)]
```
这将创建一个包含10个Person实例的列表,在此过程中我们只需要提供每个Person实例的初始化参数即可。
3. 在列表中存储表示类的字符串
除了在列表中存储类的实例之外,我们还可以在列表中存储表示类的字符串。这是一种常见的用法,它允许我们在程序的不同部分使用相同的类名,而不必担心名称冲突。例如,下面的代码创建一个名为classNames的列表,其中包含3个表示类名的字符串:
```python
classNames = ["Person", "Animal", "Vehicle"]
```
这个列表可以用于创建具有不同类的对象,例如:
```python
className = classNames[0] # 从列表中获取第一个类名
cls = globals()[className] # 获取Person类的引用
p = cls("Alice", 25) # 创建一个Person实例
```
此时,变量p就是一个Person实例,并且我们可以像前面的例子一样使用它。
4. 使用列表实例方法和属性
除了在列表中存储类实例或类名外,我们还可以在列表中使用类的实例方法和属性。例如,下面的代码创建一个包含3个Person实例的列表,并使用每个实例的getName()方法来打印该实例的名称:
```python
class Person:
def __init__(self, name):
self.name = name
def getName(self):
return self.name
p1 = Person("Alice")
p2 = Person("Bob")
p3 = Person("Charlie")
people = [p1, p2, p3]
for person in people:
print(person.getName())
```
此时,输出如下:
```
Alice
Bob
Charlie
```
5. 列表中的类作为模块
最后,我们可以将Python列表中的类作为模块来使用。这种方法是创建动态模块的一种方式,可以使我们根据不同的输入动态地定义类。例如,下面的代码创建包含一个名为className的字符串(表示要创建的类名)的列表,并使用这些字符串来创建动态模块:
```python
classList = ["Person", "Animal", "Vehicle"]
for className in classList:
code = f"class {className}: pass"
exec(code)
p = Person() # 创建一个Person实例
a = Animal() # 创建一个Animal实例
v = Vehicle() # 创建一个Vehicle实例
```
此时,变量p、a和v分别是Person、Animal和Vehicle类的实例。
微信扫一扫,领取最新备考资料