文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PYTHON 中的__init__()方

2023-01-31 06:54

关注

在类定义时,self和__init__会时常用到。
self 参数,它在所有的方法声明中都存在。它代表实例对象本身,当你用实例调用方法时,由解释器悄悄地传递给方法的,所以,你不需要自己传递self 进来,因为它是自动传入的。

  1. class Sample(object):
  2. def __init__(self, a,b):
  3.     self.a = a
  4.     self.b = b
  5.  
  6. def updtFunc(self, a):
  7.      self.a = a
  8.      return self.a, self.b
  9.  
  10. item = Sample(10,3)
  11. print item.addFunc(4)
 
out put:
(3,4)


self 变量用于在类实例方法中引用方法所绑定的实例。

因为方法的实例在任何方法调用中总是

 

作为第一个参数传递的,self 被选中用来代表实例。你必须在方法声明中放上self(你可能已经注

 

意到了这点),但可以在方法中不使用实例(self)。

如果你的方法中没有用到self , 那么请考虑创建
一个常规函数,除非你有特别的原因。

毕竟,你的方法代码没有使用实例,没有与类关联其功能,

 

这使得它看起来更像一个常规函数。在其它面向对象语言中,self 可能被称为 this。

 

__init__:

 

在Python 中,__init__()实际上不是一个构造器。你没有调用“new”来创建一个新对象。(Python 根本就没有“new”关键字)。取而代之,Python 创建实例后,在实例化过程中,调用__init__()方法,当一个类被实例化时,就可以定义额外的行为,比如,设定初始值或者运行一些初步诊断代码 ———主要是在实例被创建后,实例化调用返回这个实例之前,去执行某些特定的任务或设置。

 

__init__()在实例化时被调用,即,在Sample()被调用时。你可以认为实例化是对__init__()的一种隐式的调用,因为传给Sample()的参数完全与__init__()接收到的参数是一样的(除了self,它是自动传递的)。

 

另外,如果不存在默认的参数,那么传给__init__()的两个参数在实例化时是必须的。

 

当def __init__(self, a = 0, b = 0)时, 我们可以只用item = Sample()来生成实例。

 

当类被调用,实例化的第一步是创建实例对象。一旦对象创建了,Python 检查是否实现了

 

__init__()方法。默认情况下,如果没有定义(或覆盖)特殊方法__init__(),对实例不会施加任

 

何特别的操作.任何所需的特定操作,都需要程序员实现__init__(),覆盖它的默认行为。如果

 

__init__()没有实现,则返回它的对象,实例化过程完毕。

 

然而,如果__init__()已经被实现,那么它将被调用,实例对象作为第一个参数(self)被传递

 

进去,像标准方法调用一样。调用类时,传进的任何参数都交给了__init__()。实际中,你可以想

 

像成这样:把创建实例的调用当成是对构造器的调用。

 

class EmplAddrBookEntry(AddrBookEntry):

 

'Employee Address Book Entry class'#员工地址本类

 

def __init__(self, nm, ph, id, em):

 

AddrBookEntry.__init__(self, nm, ph)

 

self.empid = id

 

self.email = em

 

如 果需要,每个子类最好定义它自己的构造器,不然,基类的构造器会被调用。然而,如果子类重写基类的构造器,基类的构造器就不会被自动调用了--这样,基类 的构造器就必须显式写出才会被执行,像我们上面那样,用AddrBookEntry.__init__()设置名字和电话号码。我们的子类在构造器后面几 行还设置了另外两个实例属性:员工ID 和E-mail 地址。

 

核心笔记:命名类、属性和方法

 

类名通常由大写字母打头。这是标准惯例,可以帮助你识别类,特别是在实例化过程中(有时看

 

起来像函数调用)。还有,数据属性(译者注:变量或常量)听起来应当是数据值的名字,方法名应

 

当指出对应对象或值的行为。另一种表达方式是:数据值应该使用名词作为名字,方法使用谓词(动

 

词加对象)。数据项是操作的对象、方法应当表明程序员想要在对象进行什么操作。在上面我们定义

 

的类中,遵循了这样的方针,数据值像“name”,“phone”和“email”,行为如“updatePhone”,

 

“updateEmail”。这就是常说的“混合记法(mixedCase)”或“骆驼记法(camelCase)”。Python 规

 

范推荐使用骆驼记法的下划线方式,比如,“update_phone”,“update_email”。类也要细致命名,

 

像“AddrBookEntry”,“RepairShop”等等就是很好的名字。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯