首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我们不需要在super()中包含self呢?

在Python中,super()函数用于调用父类的方法。当我们在子类中重写父类的方法时,通常会使用super()函数来调用父类的方法,并在子类中添加自己的逻辑。

在使用super()函数时,我们不需要在super()中包含self参数的原因是,Python中的super()函数已经隐式地将self参数传递给了父类的方法。这是因为在Python中,方法的第一个参数通常是self,用于表示实例对象本身。

通过使用super()函数,我们可以避免显式地传递self参数,使代码更加简洁和易读。同时,这也符合Python的语法规范和面向对象的设计原则。

总结起来,我们不需要在super()中包含self参数的原因是,super()函数已经隐式地将self参数传递给了父类的方法,使代码更加简洁和符合Python的语法规范。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么不需要在 Docker 容器运行 SSHD

我们会看一下我们怎么不使用SSH来做这些事情。 你怎么管理你的密钥和密码的?一般来说,你要么把它们写到你的镜像,要么就把它们放在一个卷。你想一下如果你要更新这些密钥或密码你会怎么做。...如果不用SSH,我们不就少一个需要担心的事了吗? 你如何管理安全升级?SSH服务器是挺安全的,但是仍然会有安全问题,你会在必要的时候不得不升级所有使用SSH的容器。这意味着大量的重建和重启。...你可以负责把应用放到容器,但你是否应该同时负责管理访问策略和安全限制?在小机构,这都不是事。但是在大型机构,如果你是负责设立应用容器的人,那很可能有另外一个人负责定义远程访问策略。...总结 在一个容器运行SSH服务器,这真的是一个错误(大写字母W)吗?老实说,没那么严重。当你不去访问Docker主机的时候,这样做甚至是极其方便的,但是这仍然需要在容器取得一个shell。...除此之外,我们还有许多方式可以在容器运行SSH服务器,并能取得所有我们想要的特性,而且其架构还非常清晰。Docker允许你使用任何最适合你的工作流。

80930

为什么我们要在nodejs阻塞event loop

为什么我们要在nodejs阻塞event loop 简介 我们知道event loop是nodejs事件处理的基础,event loop主要运行的初始化和callback事件。...这些API的目的是供我们在REPL环境中使用的,我们不应该直接在服务器端程序中使用他们。 有哪些不推荐在server端使用的API?...REDOS正则表达式DOS攻击 正则表达式有什么问题?正则表达式有一个悲观回溯的问题。 什么是悲观回溯我们举个例子,假如大家对正则表达式已经很熟悉了。...但是我们只到最后才发现不能够匹配,所以产生了REDOS攻击。 如何避免REDOS攻击?...总结 event loop和worker pool是nodejs两种不同的事件处理机制,我们要在程序根据实际问题来选用。

45240

为什么我们要在 Sketch 备份所有 Figma 设计

Magicul 支持将各个不同的版本和备份分别保存在我们的AWS S3 存储云中。最重要的是,Magicul 允许我们直接从 Figma 以 Sketch 文件类型进行备份。...Sketch 文件 这两个文件都保存到我们的 S3 存储云中 周而复始,形成闭环 我们因为公司习惯,在 S3 已经存了很多数据,所以我们也觉得将它直接作为我们的核心存储路径是个很好的选择。...这样,我们的设计文件备份在都在同一地方。 为什么我们选择将我们的 Fig 文件转换为 Sketch?...1. .fig 是一种专有的二进制文件,没有公开文档支持 确实,未来几年内 Figma 应该会有比较好的市场表现, 但谁知道更长时间之后的设计市场又会开始流行哪些新工具?...S3 存储云服务器

1K30

asp.net为什么修改了配置文件后我们不需要重启IIS

本文转载:http://blog.itpub.net/12639172/viewspace-659819/ 大家知道,asp.net,如果我们修改了配置文件只要把它保存之后,就会立刻反应到程序, 并不需我们重启...甚至我们可以在不停止IIS的情况下,直接替换应用程序下的文件,包括我们 编译好的dll文件等,你需要做的只是替换你变换了的文件而已。那么.net是怎么做到的?      ...这要归功于.net的应用程序域机制,应用程序域是比进程小的程序元单位,也就是说一个 进程可以包含多个应用程序域。...有了应用程序域,事情就好办了,当我们更改配置文件或者替换了一个核心的dll之后,这时.net 的监控系统会报告我们的所作所为,于是处理asp.net的进程会为改修后的应用程序重新创建一个应用程序域,这个...\Temporary ASP.NET Files目录下的文件, 所以我们才能直接替换dll等文件。

1.9K10

Python多继承、super与MRO算法

但有时需要在B类中直接访问A类的成员,也就是子类需要调用父类的成员,在这种情况下,有如下两种方法可以解决: 1. 在子类中直接通过父类名访问父类的成员 2....在B类并没有直接使用A类的名字,而是使用了super。如果A类的名字变化了,只需要修改B类的父类即可,并不需要修改B类内部的代码,这样将大大减少维护B类的工作量。...可能有的同学会问,super的第2个参数的值为什么self我们都知道,在Pythonself表示类本身的实例,那么为什么不是B()或是A()?...但这里有一个问题,如果在MyClass2类想调用D类的构造方法,在MyClass1类想调用A类的构造方法,该怎么办?当然,可以直接使用父类名进行调用,那么使用super应该如何调用。...(不存在的不需要删除),合并到当前的mro父类列表

49510

课时38:类与对象:继承

那么我们来思考一个问题:能不能不要每次都从头到尾去重新定义一个新的鱼类?因为我们知道大多数鱼的属性和方法是相似的,如果有一种机制可以让这些相似的东西得以自动传递,那就方便快捷多了。...同样是继承于Fish类,为什么金鱼(goldfish)可以移动,而鲨鱼(shark)一移动就报错? 其实这里抛出的异常说得很清楚了:Shark对象没有x属性。...********************** 三、使用super函数 **********************  super函数能够帮我们自动找到基类的方法,而且还为我们传入了self参数,这样就不需要做这些事了...super函数的“超级”之处在于你不需要明确给出任何基类的名字,它会自动帮你找到所有基类以及对应的方法。...由于你不用给出基类的名字,这就意味着如果需要改变类继承关系,只要改变class语句里的父类即可,而不必要在大量代码中去修改所有被继承的方法。

35350

ARC 环境下 dealloc 的使用误区

在MRC时代,我们要在 dealloc做很多,比如释放对象,如今我们已经进入ARC时代,对于普通对象的释放,系统已经帮我们做好了;是不是我们就再也不用担心内存问题了?答案是否定的 。...什么情况下会调用? 当对象的引用计数为0,系统会自动调用dealloc方法,回收内存。...//调用方法 -(void)dealloc{ // [super dealloc]; //ARC环境下不需要调用。因为系统会 自动调用该方法帮助释放父类对象。...二.dealloc 误区 我们在开发过程,用到dealloc,却因不会意识得到对象的引用计数是不是为0,dealloc到底走了没走,因而导致内存暴增,还会遇到很多奇怪的问题。...name:@"changerInfoItem" object:nil]; } 一直相信没错啊,在dealloc的打断点才发现该方法却没有走,为什么

87540

Python super().__init__和Base.__init__的区别

在上面的例子我们使用了super来调用父类方法,那么能不能使用Base来调用? .... Base.__init__(self) .........之前的文章我们了解到类的普通函数调用需要使用类对象调用,而类的普通函数第一个参数默认是self,调用时不需要传递此参数,因为通过对象调用会自动传递。...__init__的print test: Device2 #test方法的print 四个类,Base初始化函数被调用了两次,为什么?Sub....那为什么会有这两差异?我要是不说点有内容的东西 ? 以我做了几年C++的经验,我来给大家琢磨一下,之前的一篇文章我提到有一个程序存储区,什么是程序存储区?就是函数、类这些代码的区域。...__init__和func是一样的,这绝不是我们所希望的类函数。那么为什么super会正确的找到要执行的函数

2.2K30

自定义 Sanic Exception

,这些异常只能指定 message 和 status_code 参数,那我们可不可以自定义 exception 然后在自定义的 exception 增加参数?...从结果可以发现,除了 http 状态码使我想要的其它全错,连 content-type 都是text/plain; charset=utf-8,为什么会这样我们定义的参数code 和 text 去了哪里...看来直接使用自定义异常类的方法不能满足我们上边定义的 json 格式(需要有 error_code、message 和 text)数据的要求。那我们能不能自定义 异常处理方法?答案当然是可以。..., 'message': message, 'text': text }, status=status_code) 这样我们只需要在需要抛出异常的地方...这段代码,如果我们没有找到用户信息,json_error 的返回结果会赋值给 account,并不会抛出异常,如果需要抛出异常,我们要在 test 方法检查 account 的结果,如果包含 account

77630

Python 进阶指南(编程轻松进阶):十六、面向对象编程和继承

例如,如果构造器既可以接受新对象需要的数据字符串,也可以接受包含新对象需要的数据的文件名字符串,会怎么样我们不希望__init__()方法的参数列表冗长而混乱。...这就是为什么我们在AsciiArt类的fromFile()方法称cls为(characters)而不是AsciiArt(characters)。...如果你在想,“为什么我不能用一个函数或者全局变量来代替?”这暗示您可能不需要使用类方法、类属性或静态方法。...关于这些特性以及为什么你需要或不需要它们的更多讨论,请阅读 Phillip J....但是当我们从多个共享方法名的复杂类继承时会发生什么? 例如,考虑本章前面的MiniBoard和HintTTTBoard井字棋棋盘类。如果我们想要一个显示微型井字棋棋盘并提供提示的类

51920

Swift 类构造器的使用

于是开心地双击, 然后, Xcode 在我们的屏幕自动生成了这些东西: Swift 复制代码 required init(coder aDecoder: NSCoder) { fatalError...于是又出现了下面的提示: Convenience initializer for 'TableViewCell' must delegate (with 'self.init') rather than...指定构造器是类的主要构造器, 要在指定构造器初始化所有的属性, 并且要在调用父类合适的指定构造器....不过为什么要遵循这三条规则? init 的方法的调用机制是什么? init 机制 在 Swift 中一个实例的初始化是分为两个阶段的 第一阶段是实例的所有属性被初始化....而这与 ObjC 的区别主要在于第一部分, 因为在 ObjC 中所有的属性如果不赋值都会默认被初始化为 nil或者 0. 而在 Swift 可以所有属性的值由开发者来指定.

1.7K20

Java开发者的Python进修指南:JSON利器之官方json库、demjson和orjson的实用指南

import json class Response_data: def __init__(self, id, feed_id): super()....它的入参是标准反序列化后的字典,我们可以根据自己的规则将其转换为所需的格式。 为什么我需要在object_hook编写if判断?这是因为object_hook参数在反序列化时是递归的。...这与Java的JSON序列化有很大的不同。在Java我们不需要关注这么多细节。但是在Python我们不仅需要指定参数名称,还需要处理好嵌套结构。..., 1)} json_data = orjson.dumps(data, option=orjson.OPT_OMIT_MICROSECONDS) print(json_data.decode()) 为什么需要进行解码...原因主要在于orjson返回的是二进制数据,而我们需要将其转换为字符串类型,因此需要进行解码操作。 总结 JSON是一种流行的数据传输格式,Python中有多种处理JSON的方式。

29520

开源图书《Python完全自学教程》8.5.2多继承

然而,我们分明在它所继承的一个父类 Triangle 定义了此属性了,为什么这里还会报错?难道没有“成功”地继承?...按照上述顺序,执行 RightPyramid 类的注释(6)的 super().area() 时,就会在父类 Triangle 搜索到 Triangle.area(self) 。...如果在 IDE 编辑 rectangle.py 时,已经退出了交互模式,现在又重新进入交互模式,则不需要上述重加载,直接进入下面的操作(重载之后也执行如下操作)。...对于四棱锥的三角形面积,为什么不使用 Triangle 类的 area() 方法计算?...当然可以,但是由于在类 Rectangle 和 Triangle 中都有 area() 方法,且两个都要在 RightPyramid 调用,如果还用 super() ,势必造成混乱。

20920

为什么不能在init和dealloc函数中使用accessor方法

前言 为什么要在init和dealloc方法调用getter和setter: Apple在Mac与iOS关于内存管理的开发文档,有一节的题目为:“Don’tUse Accessor Methods...原因如下:子类调用init(或其他初始化构造方法)初始化对象时候,子类的init会首先调用父类的init(self = [super init]),这样就会调到父类的init方法里,而我们在父类的init...如果我们在子类的setter方法做了其他操作,比如修改了某个实例变量的值,那么就会出错,因为此时self还没有初始化好。...,且ARC不需我们手动调用[super dealloc])。..._debugInfo = nil; } @end 在SubClass的实例对象销毁时,首先调用子类的dealloc,再调用父类的dealloc(这与init初始化是相反的,且ARC不需我们手动调用

9.1K40

Python学习笔记之Python的Super方法

我们最常见的,可以说几乎唯一能见到的使用super的形式是: class SubClass(BaseClass): def method(self): super(SubClass...当我第一次见到这个super()的时候,我想说,这是啥啊?为什么Python的super看起来这么奇怪super直接指向父类的实例不就得了么?为什么非得搞两个参数?...第二个参数为啥是self?既然是self你省略不得了? 还有,super()返回的是个啥玩意啊,为什么可以.method() ? 难道他返回了一个BaseClass的instance么?...你只需要在重写方法的时候,用super去调用父类的方法,然后再做自己的事就可以了。 但是在多继承的情况下,一切都不美好了: ? 当艺人展示自己能力的时候,他说,父亲啊,你先展示自己的能力,然后我来!...总不能写两遍 super.展示自己 吧? 那么我们自然想到,给super搞一个参数不得了,指出super的是哪个父类。

41950

LLM 学习笔记-transformers库的 PreTrainedModel 和 ModelOutput 到底是什么?

为什么说大概率,因为自回归输出还有蛮多种的,赶时间的朋友看到这就可以切换到其他文章了,至此你应该也能了解 transformers 最核心的模块了。...Tuple[torch.FloatTensor]] = None attentions: Optional[Tuple[torch.FloatTensor]] = None 为了保持代码规范,我们要在模型的...BaseModelOutputWithNoAttention: 在模型输出包含注意力(attention)信息。...BaseModelOutputWithCrossAttentions: 在模型输出包含交叉注意力(cross attentions)信息,通常用于特定任务需要跨注意力的情况,比如机器翻译。...另外可以看到 hf 定义的模型都是由传入的 config参数定义的,所以不同模型对应不同的配置啦,这也是为什么我们经常能看到有像 BertConfig,GPTConfig这些预先定义好的类。

1.1K10

iOS - 老生常谈内存管理(二):从 MRC 说起

这是为什么?这里要介绍两个概念,野指针和僵尸对象。..., self.lastName] autorelease]; return string; } 根据内存管理规则,你通过alloc方法创建并持有对象,要在不需要该对象时发送一条release消息...为什么初始化方法需要self = [super init]? 先大概解释一下selfsuperself是对象指针,指向当前消息接收者。...为什么要在初始化方法和 dealloc 中使用访问器方法? 在初始化方法和dealloc,对象的存在与否还不确定,它可能还未初始化完毕,所以给对象发消息可能不会成功,或者导致一些问题的发生。...在init我们会调用self = [super init]对父类的东西先进行初始化,即子类先调用父类的init方法(注意: 调用的父类的init方法self还是子类对象)。

1.5K21
领券