Python中__init__方法注意点
来源:互联网 发布:微博刷转发软件 编辑:程序博客网 时间:2024/05/21 11:32
注意1、__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了。
1
2
3
4
5
class
A(
object
):
def
__init__(
self
,name):
self
.name
=
name
def
getName(
self
):
return
'A '
+
self
.name
当我们执行
1
a
=
A(
'hello'
)
时,可以理解为
1
2
a
=
object
.__new__(A)
A.__init__(a,
'hello'
)
即__init__作用是初始化已实例化后的对象。
注意2、子类可以不重写__init__,实例化子类时,会自动调用超类中已定义的__init__
1
2
3
4
5
6
7
class
B(A):
def
getName(
self
):
return
'B '
+
self
.name
if
__name__
=
=
'__main__'
:
b
=
B(
'hello'
)
print
b.getName()
但如果重写了__init__,实例化子类时,则不会隐式的再去调用超类中已定义的__init__
1
2
3
4
5
6
7
8
9
class
C(A):
def
__init__(
self
):
pass
def
getName(
self
):
return
'C '
+
self
.name
if
__name__
=
=
'__main__'
:
c
=
C()
print
c.getName()
则会报"AttributeError: 'C' object has no attribute 'name'”错误,所以如果重写了__init__,为了能使用或扩展超类中的行为,最好显式的调用超类的__init__方法
1
2
3
4
5
6
7
8
9
class
C(A):
def
__init__(
self
,name):
super
(C,
self
).__init__(name)
def
getName(
self
):
return
'C '
+
self
.name
if
__name__
=
=
'__main__'
:
c
=
C(
'hello'
)
print
c.getName()
0 0
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法注意点
- Python中__init__方法介绍
- Python中__init__方法介绍
- Python中__init__方法介绍
- Python中__init__方法使用
- Python中__init__方法使用
- Python中__init__的方法解惑
- Python 之__init__方法
- python中__init__()作用
- python中__init__.py
- python中__init__()方法和__new__()方法的区别
- Python字典方法注意点
- C++ “error LNK1169: 找到一个或多个多重定义的符号” 解决方法
- 第十六条:复合优先于继承
- 美丽的图片
- NDS(导航数据标准)简介
- 摇杆代码(委托+事件)
- Python中__init__方法注意点
- LNMP安装了哪些软件?安装目录在哪?
- Openwrt使用mtd和sysupgrade刷机、备份恢复系统配置
- Java线程池使用说明
- 基线化是什么意思?
- c++ string转int,int转string
- AngularJs 多语言的使用 angular-translate
- LNMP 1.2缓存加速类扩展(xcache/Redis/memcached/eAccelerator)、imageMagick、ionCube安装教程
- 错误:bject contains invalid bitcode