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

相关文章
|
30天前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
|
1月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
2月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
2月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
158 72
|
29天前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
|
3月前
|
存储 机器学习/深度学习 人工智能
稀疏矩阵存储模型比较与在Python中的实现方法探讨
本文探讨了稀疏矩阵的压缩存储模型及其在Python中的实现方法,涵盖COO、CSR、CSC等常见格式。通过`scipy.sparse`等工具,分析了稀疏矩阵在高效运算中的应用,如矩阵乘法和图结构分析。文章还结合实际场景(推荐系统、自然语言处理等),提供了优化建议及性能评估,并展望了稀疏计算与AI硬件协同的未来趋势。掌握稀疏矩阵技术,可显著提升大规模数据处理效率,为工程实践带来重要价值。
156 58
|
2月前
|
数据管理 开发工具 索引
在Python中借助Everything工具实现高效文件搜索的方法
使用上述方法,你就能在Python中利用Everything的强大搜索能力实现快速的文件搜索,这对于需要在大量文件中进行快速查找的场景尤其有用。此外,利用Python脚本可以灵活地将这一功能集成到更复杂的应用程序中,增强了自动化处理和数据管理的能力。
163 0
|
2月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
2月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
2月前
|
存储 JSON API
小红书批量发布笔记工具,小红书批量上传软件,python框架分享
这个框架包含了配置文件、工具函数、API封装和主程序四个模块。使用时需要先配置账号信息,

推荐镜像

更多