为了账号安全,请及时绑定邮箱和手机立即绑定

如何在类中将参数传递给 __init__

如何在类中将参数传递给 __init__

慕工程0101907 2022-12-20 09:57:37
你好,我想__init__在 Python 的课堂上理解。我理解类是如何工作的,但我无法理解这里的一件事是代码:class Computer:    def __init__(self, name, cpu, ram, hdd, ssd):        self.name = name        self.cpu = cpu        self.ram = ram        self.hdd = hdd        self.ssd = ssd    def config(self):        print("Configuration of computer is: ", self.name, self.cpu, self.ram, self.hdd, self.ssd )computer1 = Computer("HP ", "i7 ", "16gb ", "1TB ", "256GB")computer1.config()为什么以及如何自动Computer("HP ", "i7 ", "16gb ", "1TB ", "256GB")传递参数__init__(self, name, cpu, ram, hdd, ssd)?为什么我们将这个参数写在类括号中而不是像这样分开: computer1.__init__("HP ", "i7 ", "16gb ", "1TB ", "256GB")代码如何理解必须将写在 Computer 括号中的参数传递给__init__?
查看完整描述

2 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

因为__init__方法在Python中大致就是代表一个构造函数。当您调用Computer("HP ","i7 ","16gb ","1TB ","256GB")Python 时,它会为您创建一个对象,并将其作为第一个参数传递给该__init__方法。任何其他参数(超过您声明的五个)也将作为参数传递——在这种情况下会引发异常,因为构造函数不期望它们。



查看完整回答
反对 回复 2022-12-20
?
www说

TA贡献1775条经验 获得超8个赞

这就是 python 的工作原理。可能它是这样设计的,因为一些类/结构是用纯 C 编写的。

例如。当你想实现自定义类并为其实现len()功能时,你可以通过调用len(instance_of_your_class). 然后你所要做的就是__len__()在你的类中实现方法。
另一方面,你有listpython 类。这个类是用 C 实现的,因为它必须非常快。然后当你调用len(instance_of_list)interpreted 时会调用__len__,这将调用 C 中的 equavilent 函数。

这种设计带来了很多好处。一个例子是方法__getitem__。您实施这样您就可以使用instalce_of_class[2]. 但它也使您能够使用inif value in instance_of_class)。

您可以阅读有关此类方法的信息。在 python 术语中,它们是dunder方法。


查看完整回答
反对 回复 2022-12-20
  • 2 回答
  • 0 关注
  • 251 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号