|
发表于 2020-12-16 17:30:21
|
显示全部楼层
self.变量名都是实例属性或实例变量
简单来说def __init__(self)
就是创建实例属性的魔法方法
举个例子:
- class C:
- def __init__(self):
- self.x=2
-
- >>> b=C()
- >>> print(b.x)
- 2
复制代码
- class C:
- def baga(self):
- self.x=2
-
- >>> b=C()
- >>> print(b.x)
- Traceback (most recent call last):
- File "<pyshell#99>", line 1, in <module>
- print(b.x)
- AttributeError: 'C' object has no attribute 'x'
复制代码
为什么后者会报错呢?
先看报错内容'C' object has no attribute 'x'('C'对象没有属性'x')
所以在实例方法需要实例属性才行而实例属性就是self.变量名
我上面也说了在__init__方法内部,就可以把各种属性绑定到self。
所以def __init__(self)
就是创建实例属性的魔法方法
但你也可能会问?
- class C:
- x=2
- def baga(self):
- self.x=2
-
- >>> b=C()
- >>> print(b.x)
- 2
复制代码
这样又是嘛回事呀?
原因就是x=2是类属性
而self.x想当于将类属性转化为实例属性的意思
所以二者是有区别的
如果有帮助就给个最佳吧 |
|