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

你好,我想__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__?


慕工程0101907
浏览 252回答 2
2回答

PIPIONE

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

www说

这就是 python 的工作原理。可能它是这样设计的,因为一些类/结构是用纯 C 编写的。例如。当你想实现自定义类并为其实现len()功能时,你可以通过调用len(instance_of_your_class). 然后你所要做的就是__len__()在你的类中实现方法。另一方面,你有listpython 类。这个类是用 C 实现的,因为它必须非常快。然后当你调用len(instance_of_list)interpreted 时会调用__len__,这将调用 C 中的 equavilent 函数。这种设计带来了很多好处。一个例子是方法__getitem__。您实施这样您就可以使用instalce_of_class[2]. 但它也使您能够使用in( if value in instance_of_class)。您可以阅读有关此类方法的信息。在 python 术语中,它们是dunder方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python