python__init__方法笔记

简介: 本文总结了Python中`__init__`方法的使用要点,包括子类对父类构造方法的调用规则。当子类未重写`__init__`时,实例化会自动调用父类的构造方法;若重写,则需通过`super()`或直接调用父类名称来显式继承父类初始化逻辑。文中通过具体代码示例展示了不同场景下的行为及输出结果,帮助理解类属性与成员变量的关系,以及如何正确使用`super()`实现构造方法的继承。

python__init__方法笔记:

  • 子类需要自动调用父类的方法: 子类不重写init()方法,实例化子类后,会自动调用父类的init()的方法。
  • 子类不需要自动调用父类的方法: 子类重写init()方法,实例化子类后,将不会自动调用父类的init()的方法。
  • 子类重写init()方法又需要调用父类的方法: 使用super关键词:

ruby

体验AI代码助手

代码解读

复制代码

 super(子类,self).__init__(参数1,参数2,....)
 class Son(Father):
   def __init__(self, name):   
     super(Son, self).__init__(name)

简单的话来讲,可以理解为,类的属性如果直接写在类里面一般是要有值的

例如: class fun()

ini

体验AI代码助手

代码解读

复制代码

             a = 3

这样的情况下,类中的属性无法变成变量,当将类的属性以self.a的方式定义到初始化方法中,那属性也可以当成变量(或者理解为成员变量也可以是对象

例如:class fun()

scss

体验AI代码助手

代码解读

复制代码

            def __init__(self,a)
 
                   self.a = a
 
      f = fun(3)
 
       print(f.a)
1.子类不重写 init,实例化子类时,会自动调用父类定义的 init

ruby

体验AI代码助手

代码解读

复制代码

 class Father(object):
     def __init__(self, name):
         self.name=name
         print ( "name: %s" %( self.name) )
     def getName(self):
         return 'Father ' + self.name
  
 class Son(Father):
     def getName(self):
         return 'Son '+self.name
  
 if __name__=='__main__':
     son=Son('runoob')
     print ( son.getName() )

输出结果为:

yaml

体验AI代码助手

代码解读

复制代码

 name: runoob
 Son runoob
2.如果重写了init 时,实例化子类,就不会调用父类已经定义的 init,语法格式如下:

ruby

体验AI代码助手

代码解读

复制代码

 class Father(object):
     def __init__(self, name):
         self.name=name
         print ( "name: %s" %( self.name) )
     def getName(self):
         return 'Father ' + self.name
  
 class Son(Father):
     def __init__(self, name):
         print ( "hi" )
         self.name =  name
     def getName(self):
         return 'Son '+self.name
  
 if __name__=='__main__':
     son=Son('runoob')
     print ( son.getName() )

输出结果为:

体验AI代码助手

代码解读

复制代码

 hi
 Son runoob

3.如果重写了init 时,要继承父类的构造方法,可以使用 super 关键字:

scss

体验AI代码助手

代码解读

复制代码

 super(子类,self).__init__(参数1,参数2,....)

还有一种经典写法:

lua

体验AI代码助手

代码解读

复制代码

 父类名称.__init__(self,参数1,参数2,...)

ruby

体验AI代码助手

代码解读

复制代码

 class Father(object):
     def __init__(self, name):
         self.name=name
         print ( "name: %s" %( self.name))
     def getName(self):
         return 'Father ' + self.name
  
 class Son(Father):
     def __init__(self, name):
         super(Son, self).__init__(name)
         print ("hi")
         self.name =  name
     def getName(self):
         return 'Son '+self.name
  
 if __name__=='__main__':
     son=Son('runoob')
     print ( son.getName() )

输出结果为:

yaml

体验AI代码助手

代码解读

复制代码

 name: runoob
 hi
 Son runoobname: runoob
 hi
 Son runoob

\


转载来源:https://juejin.cn/post/7094996490619207687

相关文章
|
2月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
309 1
|
3月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
118 2
|
3月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
113 0
|
3月前
|
传感器 大数据 API
Python数字限制在指定范围内:方法与实践
在Python编程中,限制数字范围是常见需求,如游戏属性控制、金融计算和数据过滤等场景。本文介绍了五种主流方法:基础条件判断、数学运算、装饰器模式、类封装及NumPy数组处理,分别适用于不同复杂度和性能要求的场景。每种方法均有示例代码和适用情况说明,帮助开发者根据实际需求选择最优方案。
182 0
|
3月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
2月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
371 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
3月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
239 4
|
2月前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
|
3月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
135 0
|
4月前
|
数据管理 开发工具 索引
在Python中借助Everything工具实现高效文件搜索的方法
使用上述方法,你就能在Python中利用Everything的强大搜索能力实现快速的文件搜索,这对于需要在大量文件中进行快速查找的场景尤其有用。此外,利用Python脚本可以灵活地将这一功能集成到更复杂的应用程序中,增强了自动化处理和数据管理的能力。
322 0

推荐镜像

更多