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

相关文章
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
7天前
|
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
123 72
稀疏矩阵存储模型比较与在Python中的实现方法探讨
本文探讨了稀疏矩阵的压缩存储模型及其在Python中的实现方法,涵盖COO、CSR、CSC等常见格式。通过`scipy.sparse`等工具,分析了稀疏矩阵在高效运算中的应用,如矩阵乘法和图结构分析。文章还结合实际场景(推荐系统、自然语言处理等),提供了优化建议及性能评估,并展望了稀疏计算与AI硬件协同的未来趋势。掌握稀疏矩阵技术,可显著提升大规模数据处理效率,为工程实践带来重要价值。
116 58
Python时间序列平滑技术完全指南:6种主流方法原理与实战应用
时间序列数据分析中,噪声干扰普遍存在,影响趋势提取。本文系统解析六种常用平滑技术——移动平均、EMA、Savitzky-Golay滤波器、LOESS回归、高斯滤波与卡尔曼滤波,从原理、参数配置、适用场景及优缺点多角度对比,并引入RPR指标量化平滑效果,助力方法选择与优化。
76 0
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
小红书批量发布笔记工具,小红书批量上传软件,python框架分享
这个框架包含了配置文件、工具函数、API封装和主程序四个模块。使用时需要先配置账号信息,
|
2月前
|
Python技术解析:了解数字类型及数据类型转换的方法。
在Python的世界里,数字并不只是简单的数学符号,他们更多的是一种生动有趣的语言,用来表达我们的思维和创意。希望你从这个小小的讲解中学到了有趣的内容,用Python的魔法揭示数字的奥秘。
86 26
解决Python requests库POST请求参数顺序问题的方法。
总之,想要在Python的requests库里保持POST参数顺序,你要像捋顺头发一样捋顺它们,在向服务器炫耀你那有条不紊的数据前。抓紧手中的 `OrderedDict`与 `json`这两把钥匙,就能向服务端展示你的请求参数就像经过高端配置的快递包裹,里面的商品摆放井井有条,任何时候开箱都是一种享受。
60 10
|
2月前
|
Python 中__new__方法详解及使用
__new__ 是 Python 中用于创建类实例的静态方法,在实例化对象时优先于 __init__ 执行。它定义在基础类 object 中,需传递 cls 参数(表示当前类)。__new__ 可决定是否使用 __init__ 方法或返回其他对象作为实例。特性包括:1) 在实例化前调用;2) 始终为静态方法。示例中展示了其用法及 Python2 和 Python3 的差异,强调了参数处理的不同。
116 10

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问