Instance attribute app defined outside __init__
时间: 2024-06-17 20:03:24 浏览: 119
引用: 类的实例属性通常在类的构造函数__init__中定义,如果在__init__之外定义实例属性,则会提示Instance attribute defined outside __init__的警告。[^1]
在Python类中,实例属性通常在构造函数__init__中赋值。如果在构造函数之外定义了实例属性,就会出现上述警告。下面是一个示例代码,展示了如何在类的外部定义实例属性,并且演示了产生的警告信息:
```python
class MyClass:
attr1 = "class attribute"
def __init__(self):
self.attr2 = "instance attribute"
print("attr1:", self.attr1)
print("attr2:", self.attr2)
def showAttributes(self):
print("attr1:", self.attr1)
print("attr2:", self.attr2)
c = MyClass()
c.showAttributes()
c.attr3 = "another instance attribute"
print("attr3:", c.attr3)
```
运行上述代码会产生如下的输出和警告信息:
```python
attr1: class attribute
attr2: instance attribute
attr1: class attribute
attr2: instance attribute
__main__:23: UserWarning: Instance attribute attr3 defined outside __init__
attr3: another instance attribute
```
警告信息提醒我们,`attr3`是在类的构造函数之外定义的实例属性。尽管这样做不会引起代码错误,但建议实例属性在构造函数中定义。这样可以使代码更加清晰易懂。
阅读全文