使用带槽的 Python 描述符

2023-11-25

我希望能够在具有插槽优化的类中使用 python 描述符:

class C(object):    
    __slots__ = ['a']
    a = MyDescriptor('a')
    def __init__(self, val):
        self.a = val

我遇到的问题是如何实现描述符类,以便能够在调用描述符对象的类实例中存储值。通常的解决方案如下所示,但不起作用,因为在 C 类中调用“slots”时不再定义“dict”:

class MyDescriptor(object):
    __slots__ = ['name']    
    def __init__(self, name_):
        self.name = name_
    def __get__(self, instance, owner):
        if self.name not in instance.__dict__:
            raise AttributeError, self.name
        return instance.__dict__[self.name]     
    def __set__(self, instance, value):
        instance.__dict__[self.name] = value

不要将插槽和实例方法声明为相同的名称。使用不同的名称,并将插槽作为属性访问,而不是通过__dict__.

class MyDescriptor(object):
    __slots__ = ['name']
    def __init__(self, name_):
        self.name = name_
    def __get__(self, instance, owner):
        return getattr(instance, self.name)
    def __set__(self, instance, value):
        setattr(instance, self.name, value)

class C(object):
    __slots__ = ['_a']
    a = MyDescriptor('_a')
    def __init__(self, val):
        self.a = val

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

使用带槽的 Python 描述符 的相关文章

  • 使用 pygame 显示 unicode 符号

    我检查了其他答案 但不明白为什么我的代码错误地显示 This is what I currently see https i stack imgur com 8tNIK png 这是关于文本渲染的相关代码 font pygame font
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • 检查 Python 中的可迭代对象中的所有元素的谓词是否计算为 true

    我很确定有一个常见的习语 但我无法通过谷歌搜索找到它 这是我想做的 用Java Applies the predicate to all elements of the iterable and returns true if all ev
  • 删除 Django 1.7 中的应用程序(和关联的数据库表)

    是否可以使用 Django 1 7 迁移来完全删除 卸载应用程序及其所有跟踪 主要是其所有数据库表 如果没有 在 Django 1 7 中执行此操作的适当方法是什么 python manage py migrate
  • pyspark 数据框中的自定义排序

    是否有推荐的方法在 pyspark 中实现分类数据的自定义排序 我理想地寻找 pandas 分类数据类型提供的功能 因此 给定一个数据集Speed列 可能的选项是 Super Fast Fast Medium Slow 我想实现适合上下文的
  • Pandas:如果单元格包含特定文本则删除行

    pandas 中的这段代码不起作用 如果该列包含提供的任何文本 数字 我希望它删除该行 目前 我只能在单元格与我的代码中传递的确切文本匹配时才能使其工作 因为它只删除显示 Fin 的单元格不是金融或金融 df2 df df Team Fin
  • 如何在 Python 中加密并在 Java 中解密?

    我正在尝试在 Python 程序中加密一些数据并将其保存 然后在 Java 程序中解密该数据 在Python中 我像这样加密它 from Crypto Cipher import AES KEY 1234567890123456789012
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • Emacs 24.x 上的 IPython 支持

    我对 IPython 与 Emacs 的集成感到困惑 从 Emacs 24 开始 Emacs 附带了自己的python el 该文件是否支持 IPython 还是仅支持 Python 另外 维基百科 http emacswiki org e
  • 在 Windows 上使用 apache mod_wsgi 运行 Flask 应用程序时导入冲突

    我允许您询问我在 Windows 上使用您的 mod wsgi portage 托管 Flask 应用程序时遇到的问题 我有两个烧瓶应用程序 由于导入冲突 只有一个可以同时存在 IE 如果请求申请 1 我有回复 然后 如果我请求应用程序 2
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • 使用 Pandas 计算 delta 列

    我有一个数据框 如下所示 Name Variable Field A 2 3 412 A 2 9 861 A 3 5 1703 B 3 5 1731 A 4 0 2609 B 4 0 2539 A 4 6 2821 B 4 6 2779 A
  • Python:IndexError:修改代码后列表索引超出范围

    我的代码应该提供以下格式的输出 我尝试修改代码 但我破坏了它 import pandas as pd from bs4 import BeautifulSoup as bs from selenium import webdriver im
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • TKinter 中的禁用/启用按钮

    我正在尝试制作一个像开关一样的按钮 所以如果我单击禁用按钮 它将禁用 按钮 有效 如果我再次按下它 它将再次启用它 我尝试了 if else 之类的东西 但没有成功 这是一个例子 from tkinter import fenster Tk
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS
  • 如何为不同操作系统/Python 版本编译 Python C/C++ 扩展?

    我注意到一些成熟的Python库已经为大多数架构 Win32 Win amd64 MacOS 和Python版本提供了预编译版本 针对不同环境交叉编译扩展的标准方法是什么 葡萄酒 虚拟机 众包 我们使用虚拟机和Hudson http hud

随机推荐

  • 如何使用字典执行多个搜索和替换操作? [复制]

    这个问题在这里已经有答案了 我必须在地址字段中将 北 南 等文本替换为 N S 等 我想到制作一本字典来保存替换内容 假设我们有 replacements NORTH N SOUTH S EAST E WEST W address 123
  • 如何在 JSP 中从 /main/resources 链接 Web 资源文件?

    我的 java webapp 中有以下结构 main java resources lib css style css webapp WEB INF web xml index jsp 如何将 style css 链接到我的索引 jsp 这
  • AngularFire - 如何查询非规范化数据?

    好的 我刚刚开始使用 Firebase 我读过这个 https www firebase com docs data struct html我读过这个 https www firebase com blog 2013 04 12 denor
  • C++ 结构体的 stlpriority_queue

    我们如何使用STLpriority queue对于结构 任何插图推入和弹出的过程中 结构体有多种数据类型 Say struct thing int a char b glass 10 现在我如何使用 int a 将这个结构放在priorit
  • Thread.CurrentThread.Join() 什么时候有意义?

    调用 Thread CurrentThread Join 的效果是什么 是否 何时调用它才有意义 真的是吗 CurrentThread Join 你在真实代码中看到的 我有点怀疑 除非这是一些阻止其他线程加入当前线程的黑客 或者是 Curr
  • spring-cloud-starter-openfeign:无效的 HTTP 方法:PATCH 执行 PATCH

    Context 我有一个 Spring Boot 版本 2 2 6 RELEASE Web 项目 从这个 Web 应用程序 我称之为 APP1 中 我想使用另一个 Web 应用程序 我们称之为 APP2 的 PATCH 方法调用另一个 UR
  • NSCollectionView 与部分 - 就像在 iPhoto 中一样

    我想构建一个类似于 iPhoto 11 中的 NSCollectionView 我想将几张图片分组到部分中 并创建一个部分标题 特定节的节标题始终可见 直到该节的最后一个元素可见 你可以看看图片就明白我的意思了 编辑 我应该补充一点 内容不
  • C# 中的延迟函数

    我需要了解如何在一组命令之间创建延迟 我的背景是 C DOS 现在在 Visual Studio 2015 中使用 C 重温这些概念 这是我正在努力解决的代码 using System Threading private void butt
  • 如何在 Cloud Api Gateway 的响应正文中添加一些数据

    我正在将一些身份验证逻辑添加到云 api 网关中 我添加了网关过滤器 import java util List import org springframework cloud gateway filter GatewayFilter i
  • 我想在我的手机上安装未签名的 apk 文件。该怎么办? [关闭]

    Closed 这个问题是无关 目前不接受答案 我已经构建了一个应用程序 我通过Eclipse APK导出它 我有 APK 文件 我想将其发送给我的父亲 在另一个国家 因此无法做很多技术工作 以便他可以安装它并查看我的进度 如果没有在 Pla
  • 使用 AVFoundation 切换摄像头时视频冻结

    我制作了一个具有捕获和保存视频功能的应用程序 我为此使用了 AVFoundation苹果的AVCam一直是我的向导 我希望我能说清楚 一切工作正常 直到我第一次释放处理 AVCamCaptureManager 的 videoViewCont
  • 为什么 if 语句中的表达式顺序很重要

    假设我有一个IF健康 状况 if A B left do something 现在假设A那么更有可能获得真实值B 为什么我要关心左边哪一个 如果我把它们都放在IF括号 那么我就知道 作为代码的程序员 双方都是需要的 问题是 我的教授在他的讲
  • Laravel Eloquent 嵌套查询

    我正在使用 Laravel 并陷入了困境 我有以下型号 类别 Product 类别产品 CategoryProduct保存有关哪个产品属于哪个类别的信息 一个产品可能属于多个类别 现在 当我想加载属于特定类别的所有产品时 我需要运行查询Pr
  • 根据浏览器包含不同的 JavaScript 文件?

    我只想在浏览器不是 IE 时才包含 JavaScript 文件 有什么办法可以做到这一点吗 2022 年更新 为您提供一些选择 让您的服务器查看User Agent标头并向 Internet Explorer 发送与其他浏览器不同的 HTM
  • Android 中使用 java 的方法 Swizzling

    是否可以使用java在android中进行方法调配 我想拦截一个系统方法并记录其参数 然后正常处理它 我认为该技术不能在任何环境中使用 Java 来使用 也许您可以使用 AOP 获得类似的结果 但在 Android 上你能用它做的事情看起来
  • 对未命名临时对象的引用(生命周期)

    看完之后这个答案 from ildjarn 我写了下面的例子 看起来一个未命名的临时对象和它的引用有相同的生命周期 这怎么可能 C 标准中有规定吗 哪个版本 源代码 include
  • 从网络位数转换为网络掩码的最佳方法是什么?

    例如 如果我有一个像 172 20 10 0 24 这样的网络规范 24 就是位数 将其转换为像 0xffffff00 这样的网络掩码的最佳方法是什么 假设 32 位掩码和 32 位 int int keepBits 24 actually
  • 将多个模型的回归系数打印到共享数据框

    我知道这有点初级 基本上 我想将 coef 函数中的保存数据用于模型的共享数据框架 这些模型都从更大的共享数据集中提取有限的可能变量 我有3套14个模型 每组使用 100 个变量数据集中的 15 25 个变量 每个模型混合使用约 12 个变
  • 获取 cdk-virtual-scroller 中的静态组件引用? (参考文献已回收)

    我们最近将可滚动列表转换为 CDK Virtual Scroller Angular 7 2 12 和 Angular cdk 7 3 7 简而言之 似乎VirtualScrollViewport正在回收组件实例 而不仅仅是文档建议的模板
  • 使用带槽的 Python 描述符

    我希望能够在具有插槽优化的类中使用 python 描述符 class C object slots a a MyDescriptor a def init self val self a val 我遇到的问题是如何实现描述符类 以便能够在调