类对象['属性名']和类对象.属性名
时间: 2023-10-07 11:13:31 浏览: 153
`类对象['属性名']`和`类对象.属性名`都可以用于访问类对象的属性,但它们有一些细微的区别。
1. `类对象['属性名']`:使用方括号来访问类对象的属性。这种方式可以访问类对象的任意属性,包括动态添加的属性。通过这种方式,属性名可以是一个变量或表达式。
2. `类对象.属性名`:使用点操作符来访问类对象的属性。这种方式适用于访问已经存在于类中的属性,不能用于访问动态添加的属性。通过这种方式,属性名必须是一个合法的标识符,不能是变量或表达式。
下面是一个示例来说明这两种访问方式的差异:
```python
class MyClass:
def __init__(self):
self.attribute = 'Hello'
def add_attribute(self, name, value):
setattr(self, name, value)
my_object = MyClass()
my_object.add_attribute('dynamic_attribute', 'World')
# 使用方括号访问属性
print(my_object['attribute']) # 输出: 'Hello'
print(my_object['dynamic_attribute']) # 输出: 'World'
# 使用点操作符访问属性
print(my_object.attribute) # 输出: 'Hello'
print(my_object.dynamic_attribute) # 报错: 'MyClass' object has no attribute 'dynamic_attribute'
```
在上面的示例中,`MyClass`类有一个初始属性`attribute`,并且在运行时通过`add_attribute`方法动态添加了一个属性`dynamic_attribute`。
使用方括号访问属性可以成功访问到`attribute`和`dynamic_attribute`属性,而使用点操作符只能访问到已经存在于类中的`attribute`属性。如果尝试使用点操作符访问动态添加的属性`dynamic_attribute`,会导致属性错误。
综上所述,根据你的需求选择适合的方式来访问类对象的属性。
阅读全文