更改 __init__ 中的类属性

2023-12-27

我正在看堆栈溢出问题计算一个类的实例? https://stackoverflow.com/questions/8628123/counting-instances-of-a-class,我不确定为什么该解决方案有效,而使用简单加法的解决方案却无效。我想这更多的是如何存储和访问类变量与实例变量的问题。

这是我认为应该有效的代码,但会产生4对于每一个id:

class foo():
      num = 3    # trying 3 instead of 0 or 1 to make sure the add is working

      def __init__(self):
        self.num += 1
        self.id = self.num

f = foo()
g = foo()

print f.id    # 4
print g.id    # 4

The self.num +=1语句在某种程度上起作用(正在发生添加,但没有发生赋值)。

幕后发生的事情导致这项任务在这里失败,而itertools.count分配在其他问题的解决方案中成功吗?


整数不实现__iadd__(就地添加,对于+=),因为它们是不可变的。口译员回到标准分配并__add__相反,所以这一行:

self.num += 1

becomes:

self.num = self.num + 1

在右侧你会得到foo.num (i.e. 3) via self.num,正如你所料,但有趣的是分配给实例属性num shadows类属性。所以该行实际上相当于:

self.num = foo.num + 1  # instance attribute equals class attribute plus one

All 实例以结束self.num == 4class遗迹foo.num == 3。相反,我怀疑你想要的是:

foo.num += 1  # explicitly update the class attribute

或者,您可以将其实现为@classmethod,更明确地处理该类:

class Foo():  # note naming convention

    num = 3

    def __init__(self):
        self.increment()
        self.id = self.num  # now you're still accessing the class attribute

    @classmethod
    def increment(cls):
        cls.num += 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 __init__ 中的类属性 的相关文章

  • caffe安装:opencv libpng16.so.16链接问题

    我正在尝试在 Ubuntu 14 04 机器上使用 python 接口编译 caffe 我已经安装了 Anaconda 和 opencvconda install opencv 我还安装了咖啡中规定的所有要求 并更改了注释块makefile
  • 我可以在 matplotlib 中的绘图左侧放置一个垂直颜色条吗?

    来自颜色条方法的 matplotlib 命令摘要 http matplotlib org api pyplot api html highlight colorbar matplotlib pyplot colorbar我知道关键字参数or
  • 删除 tkinter 文本默认绑定

    我正在制作一个简单的 tkinter 文本编辑器 但我想要所有默认绑定文本小部件如果可能的话删除 例如当我按Ctrl i它默认插入一个制表符 我制作了一个事件绑定来打印文本框中有多少行 我将事件绑定设置为Ctrl i以及 当我运行它时 它会
  • 无法使用Python请求会话模块登录网站

    我刚刚开始进行网络抓取 对于我的第一个项目 我尝试使用 requests Session 登录 artofproblemsolving com 并访问另一个用户的帐户 这是我的代码 import requests LOGIN URL htt
  • 将列表值转换为 pandas 中的行

    我有数据帧 其中一列具有相同长度的 numpy ndarray 值 df list 0 Out 92 array 0 0 0 0 29273096 0 30691767 0 27531403 我想将这些列表值转换为数据框并从 df iloc
  • 尝试校准keras模型

    我正在尝试通过 Sklearn 实现来校准我的 CNN 模型CalibratedClassifierCV 尝试将其包装为KerasClassifier并覆盖预测功能但没有成功 有人可以说我做错了什么吗 这是模型代码 def create m
  • Python FTP下载550错误

    我编写了一个 ftp 爬虫来下载特定文件 它会一直工作 直到找到要下载的特定文件 然后抛出此错误 ftplib error perm 550 该文件存在于我的下载文件夹中 但文件大小为 0 kb 我需要转换某些内容才能下载吗 我可以访问 f
  • 当元组列表中相同项目的值是字符串时,对它们的值求和

    如果我有这样的元组列表 my list books 5 books 10 ink 20 paper 15 paper 20 paper 15 我怎样才能把列表变成这样 books 15 ink 20 paper 50 即添加同一项目的费用
  • 为什么 pip 已经是最新的了却要求我升级?

    我全新安装了 python 3 7 1 64 位 并使用最新的 pyCharm 作为我的 IDE 我在这台机器上没有安装其他 python 我去安装 numpy 并收到以下消息 venv C Users John PycharmProjec
  • Pygame:有人可以帮我实现双跳吗?

    我知道已经有其他关于此问题的帖子了 但我的运动系统与我发现的有点不同 所以随后我问这个问题 我的运动系统基于一个名为的命名元组Move up left right down 然后就是这个 def update self move block
  • 在python中使用编解码器utf-8打开文件错误

    我在 windows xp 和 python 2 6 4 上执行以下代码 但它显示 IOError 如何打开名称带有 utf 8 编解码器的文件 gt gt gt open unicode txt euc kr encode utf 8 T
  • Django 1.7:如何使用 html/css 文件作为模板发送电子邮件

    从 Django 1 7 开始 可以send email 使用新参数 html message 不幸的是 没有关于如何使用它的全面指南 新手友好 或者至少我找不到它 我需要使发送的电子邮件变得漂亮 因此 我试图弄清楚如何将我的消息包含到 h
  • Python GTK3 Treeview 向上或向下移动选择

    如何在树视图中向上或向下移动所选内容 我的想法是 我可以使用向上和向下按钮将选择向上移动一行或向下移动一行 我的 Treeview 使用 ListStore 不确定这是否重要 首先 我将使用我熟悉的 C 代码 如果您在将其翻译为 Pytho
  • 将 str.contains 映射到 pandas DataFrame

    python 初学者 我正在寻找创建字符串的字典映射以及关联的值 我有一个数据框 想要创建一个新列 如果字符串匹配 则会将该列标记为 x df pd DataFrame comp dell notebook dell notebook S3
  • 如何将 pandas DataFrame 转换为 TimeSeries?

    我正在寻找一种将 DataFrame 转换为 TimeSeries 而不拆分索引和值列的方法 有任何想法吗 谢谢 In 20 import pandas as pd In 21 import numpy as np In 22 dates
  • 列表中的特定范围(python)

    我有一个从文本字符串中提取的整数列表 因此当我打印该列表 我称之为test I get 135 2256 1984 3985 1991 1023 1999 我想打印或制作一个仅包含特定范围内的数字的新列表 例如1000 2000之间 我尝试
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中
  • 尝试 numba 时出现巨大错误

    我在使用 numba 时遇到了大量错误 讽刺的是 正确的结果是在错误之后打印的 我正在使用最新的 Anaconda python 并安装了 numba conda install numba 一次在 Ubuntu 13 64 位和 anac
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras
  • 如何使 Django 自定义管理命令参数不再需要?

    我正在尝试在 django 中编写自定义管理命令 如下所示 class Command BaseCommand def add arguments self parser parser add argument delay type int

随机推荐

  • RxJava 在多个订阅者之间共享 Observable 的排放

    我有以下问题 我有一个可观察量正在做一些工作 但其他可观察量需要该可观察量的输出才能工作 我曾尝试多次订阅同一个可观察量 但在日志中我看到原始可观察量已启动多次 这就是我的观察结果 即创建对象 Observable create Obser
  • 仅当我激活工作表时,VBA 复制和粘贴才有效

    我正在工作表之间复制一些范围 但我不知道为什么只有在复制或粘贴工作表之前激活工作表时它才有效 这有效 s Activate s Range Cells 2 8 Cells lrow 8 Copy d Activate d Range Cel
  • Javascript 解析/评估顺序?

    这可能是一个棘手的问题 但我不明白为什么会这样 这会发出警报 function foo 但我希望在定义函数 foo 之前评估警报 有人可以解释我对解析 评估顺序的不理解 或者指出我不理解的资源吗 JavaScript 与 PHP 一样 跟踪
  • null 或empty 的更简单写法?

    我确信我在这里错过了一些东西 对于某个项目 我需要检查字符串是否为空或为空 有没有更简单的方法来写这个 if myString myString null 是的 有String IsNullOrEmpty https msdn micros
  • 字符串连接可以用于包含 SpEL 的应用程序 yml 值吗?

    我正在尝试定义一个 Spring 数据源 url 如下所示 spring datasource url jdbc vcap services compose for mysql credentials uri useSSL true req
  • 在 Rust 中逐行读取大文件[重复]

    这个问题在这里已经有答案了 我的 Rust 程序旨在逐行读取非常大 最多几 GB 的简单文本文件 问题是 这个文件太大 无法一次读取 或者将所有行传输到一个Vec
  • IntelliJ 自动完成替换函数名称

    我已经从 Eclipse 切换到 IntelliJ 但有一些东西我还没有找到 也没有在 google 上找到 How to get the autocomplete to replace the name of the function I
  • 无法销毁 Firebase 连接,导致热 Lambda 由于“Firebase 应用程序名称‘[DEFAULT]’已存在”而失败

    几个小时以来我一直在尝试我能想到的每一种方法 基本上 我正在运行一个 AWS Lambda 函数 它以客户端和服务器角色对我的 Firebase 应用程序执行一些工作 在 Lambda 上 我需要能够逆转firebase initializ
  • 多边形分解——去除凹点形成凸多边形

    我想解构以下以蓝色显示的多边形 从多边形中删除导致凹面的所有点 目前 我一直在尝试做的是 将每个点从多边形中取出 测试该点以查看它是否落在由该集合的其余部分创建的多边形内 如果为 true 则删除该点 如果为假 请保留要点 这在大多数情况下
  • 以“Managed”结尾的类名是什么意思 (C# .NET)?

    我对 C 比较陌生 所以请耐心等待 我了解托管代码和非托管代码之间的基本区别 但我仍然有点困惑何时使用某些方法 例如 某些类名称结尾中的 托管 一词意味着什么 这是否意味着他们受到管理 而其他所有人员则不受管理 例如 两者之间有什么区别Ae
  • iOS 12 iPad 拒绝启动请求 - Xcode

    直到昨天 我已经更新一个应用程序 5 年多了 没有出现任何问题 我将 iPad 更新到了 iOS 12 但是每次尝试运行它时 我都会收到以下消息 iPad 拒绝了发布请求 我在其他装有 iOS 11 的物理设备和模拟器上进行了测试 只有 i
  • 在 Ext.data 上下文中,JsonStore 和 JsonReader 之间的基本区别是什么?

    在 Ext data 上下文中 JsonStore 和 JsonReader 之间的基本区别是什么 我的意思是 当我应该使用 JsonStore 和当我应该使用 JsonReader 时 两者都提供相同的解决方案 实际上它们是两个不同的东西
  • 如何从 Firefox Add-on SDK 扩展启动正常下载

    我正在为 Firefox 开发附加 SDK 扩展 我发现我需要能够像用户请求一样启动下载 即显示正常的文件保存对话框或将文件保存到用户喜欢的任何位置 因为它可以在首选项 gt 内容下配置 有关下载的每一篇文章或文档似乎只考虑了我知道在哪里下
  • Express.js 服务器端渲染 - 请求'/json/version/

    我有一个正在运行的快速服务器来预渲染我的反应应用程序 我有一个将 HomeContainer 与基本路线相匹配的路线文件 并且所有其他路由都与未找到的页面匹配 import HomeContainer from containers hom
  • Android:带有自定义微调器下拉 xml 布局的自定义适配器出现错误

    我有一个带有自定义适配器的微调器 我用它来将微调器下拉中的第一个元素的高度设置为零 我这样做是为了在微调器 第一个元素 中显示默认消息 而用户无法单击它 因为它不可见 package org digitalhealthagency elaj
  • opencv中的solvePnP和calibrateCamera有什么区别?

    calibrateCamera 提供rvec tvec distCoeff and cameraMatrix然而solvePnP takes cameraMatrix distCoeff作为输入并提供rvec tvec作为输出 这两个函数有
  • Laravel 5 中的切换 - Blade

    如何在刀片模板中使用开关 当我使用时 switch login error case 1 E mail input is empty break case 2 Password input is empty break endswitch
  • 未初始化常量 ActionDispatch::Session::EncryptedCookieStore (NameError)

    我和乘客一起乘坐 4 号铁轨 一切都很顺利 直到我做了一个bundle现在 现在我遇到了以下错误 Web application could not be started uninitialized constant ActionDispa
  • 图层次布局算法

    有许多工具和 SDK 可以布局图表 ogdf GraphViz mxGraph yEd 有用的布局之一是 分层布局 但没有纯粹的算法或伪代码来描述它 甚至 这种类型的布局还没有明确的定义 有人了解算法吗 source yworks com
  • 更改 __init__ 中的类属性

    我正在看堆栈溢出问题计算一个类的实例 https stackoverflow com questions 8628123 counting instances of a class 我不确定为什么该解决方案有效 而使用简单加法的解决方案却无