python - 构造函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python - 构造函数相关的知识,希望对你有一定的参考价值。


1. 如果子类定义了自己的__init__构造方法函数,当子类的实例对象被创建时,子类只会执行自己的__init__方法函数,如果子类未定义自己的构造方法函数,会沿着搜索树找到父类的构造方法函数去执行父类里的构造方法函数。



2. 如子类定义了自己的构造方法函数,如果子类的构造方法函数内没有主动调用父类的构造方法函数,那父类的实例变量在子类不会在刚刚创建子类实例对象时出现了。


[[email protected] day8]# cat t4.py 

#!/usr/bin/env python
class aa:  
        def __init__(self):  
                self.x = 10  
                self.y = 12  
        def hello(self, x):  
                return x + 1  
class bb(aa):  
        def __init__(self):                 
                aa.__init__(self)  
                self.z = 14  
          
          
a = aa()  
print a.x, a.y  
b = bb()  
print b.x, b.y

[[email protected] day8]# python t4.py 

10 12

10 12

要是没有调用父类的构造函数结果报错

[[email protected] day8]# cat t4.py 

#!/usr/bin/env python
class aa:  
        def __init__(self):  
                self.x = 10  
                self.y = 12  
        def hello(self, x):  
                return x + 1  
class bb(aa):  
        def __init__(self):                 
                #aa.__init__(self)  
                self.z = 14  
          
          
a = aa()  
print a.x, a.y  
b = bb()  
print b.x, b.y

 

[[email protected] day8]# python t4.py 

10 12

Traceback (most recent call last):

  File "t4.py", line 18, in <module>

    print b.x, b.y  

AttributeError: bb instance has no attribute ‘x‘


以上是关于python - 构造函数的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

使用python中的构造函数限制在单例类中创建对象

防止 Proguard 删除片段的空构造函数

无法解析片段中的 ViewModelProvider 构造?

为啥要避免片段中的非默认构造函数?