gpt4 book ai didi

Python:__init__(self, foo) 后面必须始终跟有 self.foo = foo 吗?

转载 作者:太空狗 更新时间:2023-10-30 02:13:17 25 4
gpt4 key购买 nike

三天来,我一直在竭尽全力地思考 __init__ 和“self”,从 Learn Python the Hard Way 练习 42 开始,然后继续阅读部分 Python 文档, Alan Gauld's chapter on Object-Oriented Programming , Stack threads like this one on "self" , and this one ,坦率地说,我正准备用砖头打自己的脸,直到我昏倒。

话虽如此,我注意到在初始 __init__ 定义中有一个非常普遍的约定,即跟进 (self, foo) 然后立即在该定义内声明 self。富=富。

来自 LPTHW,ex42:

class Game(object): 
def __init__(self, start):
self.quips = ["a list", "of phrases", "here"]
self.start = start

来自艾伦高尔德:

def __init__(self,val): self.val = val

我在那个可怕的空间里,在那里我可以看到只有一件大事我没有得到,而且无论我读了多少关于它并试图弄清楚它,它仍然是不透明的。也许如果有人能向我解释一下这种一致性,灯就会亮起来。这是因为我们需要说变量“foo”将始终等于 (foo) 参数,它本身包含在自动分配给它所附加的 def 的“self”参数中吗?

最佳答案

您可能想学习面向对象编程

松散地说,当你说

class Game(object):
def __init__(self, start):
self.start = start

你是说:

  • 我有一个名为 Game

  • 类型的“东西”
  • 每当创建一个新的游戏时,它都会要求我提供一些额外的信息,开始。 (这是因为 Game 的初始化程序,名为 __init__,需要此信息。)

  • 初始化程序(也称为“构造函数”,虽然这是一个轻微用词不当)需要知道哪个对象(刚刚创建的对象)前)它正在初始化。这是第一个参数——按照惯例通常称为 self(但您可以将其称为任何其他...)。

  • 游戏可能需要记住我给它的 start 是什么。因此它通过创建一个名为 start 的实例变量 also 将此信息存储在自身“内部”(没什么特别的,它只是您想要的任何名称) ,并将 start 参数的值赋给 start 变量。

    • 如果它不存储参数的值,则该信息将无法供以后使用。

希望这能解释发生了什么。

关于Python:__init__(self, foo) 后面必须始终跟有 self.foo = foo 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com