__init__ 的目的

2023-12-24

我读了一些书,但无法像我想的那样完全理解这一点。我正在从 LPTHW 教程中制作一个“选择你自己的冒险”小游戏,这是完整的脚本:http://codepad.org/YWVUlHnU http://codepad.org/YWVUlHnU

我不明白的是以下内容:

class Game(object):

    def __init__(self, start):
        self.quips = [
            "You died. Please try again.",
            "You lost, better luck next time.",
            "Things didn't work out well. You'll need to start over."
            "You might need to improve your skills. Try again." 
        ]
        self.start = start

我知道我们正在创建一个类,但为什么要定义__init__?后来我做了类似的事情print self.quis[randint(0, len(self.quips)-1)]打印四个字符串之一quips,但为什么我不创建一个名为quips或者其他的东西?


你打电话时Game("central_corridor"),一个新对象被创建并且Game.__init__()使用该新对象作为第一个参数调用方法(self) and "central_corridor"作为第二个参数。自从你写了a_game = Game(...),您已分配a_game来引用那个新对象。

这张图可能会让这个过程更容易理解:

注:__new__方法是Python提供的。它创建作为第一个参数给出的类的新对象。内置的__new__方法不会对其余参数执行任何操作。如果需要,您可以覆盖__new__方法并利用其他参数。

实际原因__init__()存在于您的程序中设置start属性上的Game您创建的实例(您调用的实例)a_game),这样第一次调用a_game.play()从您想要的位置开始。

你说得对quips。没有理由拥有quips设立于__init__()。您可以将其设为类属性:

class Game(object):
    quips = ["You died. Please try again.",
            "You lost, better luck next time.",
            "Things didn't work out well. You'll need to start over."
            "You might need to improve your skills. Try again." ]
    def __init__(self, start):
        self.start = start
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

__init__ 的目的 的相关文章

随机推荐

  • 为什么 localStorage["..."] 未定义,但 localStorage.getItem("...") 为 null?

    上次我检查时 返回了以下两行true null localStorage foo null localStorage getItem foo 更换时同样适用null with undefined 那么第一个问题是 为什么有两种方式来寻址lo
  • 在 Google 表单上创建动态问题

    我在谷歌电子表格中有数百张图像的网址列表 我想创建一个谷歌表单 动态选择其中 50 张图像 显示它们并询问一个喜欢 讨厌的通用问题 然后将此数据与 URL 一起提交到电子表格 有没有办法动态地做到这一点 AFAIK 您可以使用函数使用应用程
  • Oauth2 Access Token 可以被客户端共享吗?

    我是 OAUTH 的新手 正在尝试理解该规范 所以根据规范协议流程 https www rfc editor org rfc rfc6749 section 1 2 据我了解 客户端 A 可以获得受保护资源的授权代码和访问令牌 现在 如果已
  • 我的 JBoss 服务器在 Linux 上达到 100% SYS CPU;什么会导致这种情况?

    我们已经调试这个 JBoss 服务器问题很长时间了 大约工作 10 小时后 服务器陷入 100 CPU 恐慌攻击并停止运行 在此期间您无法运行任何新程序 因此您甚至无法kill quit获取堆栈跟踪 这些 100 SYS CPU 负载持续
  • 在 Spring Boot WebSocket 中向特定用户发送通知

    我想向特定客户发送通知 例如用户名 user Configuration EnableWebSocketMessageBroker public class WebSocketConfiguration extends AbstractWe
  • 使用 IO monad 的 Haskell 单元测试

    我正在尝试为返回 IO monad 的 haskell 函数编写 HUnit 测试 因为它们执行文件 I O 有什么办法可以做到这一点吗 现在我正在尝试编写一个仅返回 Bool 的方法 这可以作为我的测试 combine FilePath
  • OSCAR_SEARCH_FACETS 用于过滤产品列表

    我正在使用 django oscar 开发一个电子商务网站 产品已列出 我必须应用过滤器 例如年份 价格等 我们可以使用 oscar facet 来实现此过滤功能吗 我尝试添加以下内容奥斯卡文档 http django oscar read
  • Django 带过滤器的左外连接

    我正在使用 Django 的内置用户模型 并有一个自定义 Foo 对象 其中包含 User 的外键 我希望选择符合某些约束的所有 User 对象和所有 Foo 对象 如下所示 SELECT from auth user LEFT OUTER
  • 如何理解 Haskell 中的“$”用法[重复]

    这个问题在这里已经有答案了 当您想要将一堆函数应用于同一个变量时 就会发生这种情况 它可能如下所示 map f gt f 4 odd even 但从LYAH http learnyouahaskell com higher order fu
  • 在 MSBuild 中使用 Studio 的“自定义工具”

    我有一个 Visual Studio 的 自定义工具 可以将一些模板文件合并到代码中 为了一致性和可移植性 我希望在 Visual Studio 之外构建时能够从 MSBuild 运行此模板处理器 Visual Studio 为文件创建以下
  • Spring security Remember me 不适用于 Spring MVC 应用程序。

    身份验证和授权工作正常 但记住我在应用程序中无法正常工作 我使用了 Spring Security 的数据库身份验证和 LDAP 身份验证 一次仅一个 以及大量 Spring Security 自定义 下面是我的 spring 安全上下文文
  • Docker 使用哪种算法来使缓存无效?

    为了减少动态配置的 EC2 机器上的 Docker 镜像构建时间 我决定使用以下方法 每晚在主主机上运行 docker compose build 将整个 var lib docker 目录从主主机克隆到新盒子 在新盒子上运行 docker
  • Autohotkey 和 Windows 10:如何获取当前资源管理器路径

    我使用 autohotkey 版本 1 0 48 05 因为我坚 持使用 activeaid 读取当前路径的脚本如下 一直有效到Win 7 Get full path from open Explorer window WinGetText
  • 滚动到 UICollectionView 中的下一个单元格

    我在容器视图中有一个 UICollectionView 它的大小使得我一次只能看到一个单元格 我已禁用垂直滚动 因此仅发生水平滚动 当我在单元格之间水平滚动时 一切都很顺利 这种滚动的缺点是我可以滚动并到达一个位置 在该位置我可以看到两个单
  • 如何在java程序中禁用堆栈跟踪生成?

    我想禁用抛出异常时生成的堆栈跟踪 我用过了 Runtime getRuntime traceInstructions false Runtime getRuntime traceMethodCalls false 但我仍然可以看到生成的跟踪
  • Protractor:在不知道文件名的情况下测试下载文件

    我跟着这个答案 https stackoverflow com a 27031924 858913它看起来几乎就是我需要的东西 问题是他已经知道文件名 而我正在执行下载文件的 e2e 测试 但文件名取决于当前时间 即使是毫秒 所以我真的不知
  • maven jasperreports-functions-6.1.1 的存储库

    明显地
  • 如何在r中绘制KNN簇边界

    我正在使用 K 最近邻居的虹膜数据 我已将物种类型替换为数据中的数值 即 setosa 1 versicolor 2 virginica 3 现在我正在将数据放入训练和测试集中 并在物种colmum的基础上训练这个模型 Clustering
  • 长度示例中“List a”中的“a”是什么?

    我想知道在哪里可以找到有关 a 用在长度示例 http elm lang org examples length 似乎是某种类型 1 2 3 is a List Int 只能与整数列表一起使用的函数必须具有List Int在他们的类型签名中
  • __init__ 的目的

    我读了一些书 但无法像我想的那样完全理解这一点 我正在从 LPTHW 教程中制作一个 选择你自己的冒险 小游戏 这是完整的脚本 http codepad org YWVUlHnU http codepad org YWVUlHnU 我不明白