数据类中的属性

2024-03-25

描述


我正在尝试实现一个仅包含几个参数的简单数据类。

@dataclass
class ReconstructionParameters:

    img_size: int
    CR: int
    denoise: bool
    epochs: int
    learning_rate: float
    step_size: int
    gamma: float
    batch_size: int
    regularization: float
    N0: float
    sig: float

    arch_name: InitVar[str]

    net_arch: int = field(init=False)


    def __post_init__(self, arch_name):
        self.net_arch = arch_name

    @property
    def net_arch(self):
        return str(netType(self.net_arch))

    @net_arch.setter
    def net_arch(self, arch_name):
        self.net_arch = int(netType[arch_name])
    

用户应该能够传递包含字符串的字符串arch_name在类的初始化期间,但类应保留以下定义的等效整数IntEnum:

class netType(IntEnum):
    
    c0mp = 0
    comp = 1
    pinv = 2
    free = 3

但是,如果用户想要获取先前创建的类中包含的 net_arch,他们应该有权访问用于初始化的相同字符串,而不是整数表示形式。我正在尝试使用@property装饰器和一个setter。理想情况下,我想使用__post_init__()初始化方法net_arch使用其设置器。

Error


运行以下代码时出现错误:

a = ReconstructionParameters(
    img_size=64, 
    CR=1024,
    denoise=True,
    epochs=20, 
    learning_rate=1e-6,
    step_size=10,
    gamma=1e-7,
    batch_size=256,
    regularization=1e-6, 
    N0=2500,
    sig=0.5,
    arch_name='c0mp')
Traceback (most recent call last):

  File "C:\spas\Programs\Python\test.py", line 51, in <module>
    a = ReconstructionParameters(

  File "<string>", line 14, in __init__

  File "C:\spas\Programs\Python\test.py", line 48, in net_arch
    self.net_arch = int(netType[arch_name])

  File "C:\Users\user\Anaconda3\envs\singlepixelenv\lib\enum.py", line 349, in __getitem__
    return cls._member_map_[name]

KeyError: <property object at 0x000001CF7C26BA40>

数据类字段和属性不能具有相同的名称。但是您可以在该字段中添加前导下划线,然后该属性将起作用。

from dataclasses import InitVar, dataclass, field
from enum import IntEnum


@dataclass
class ReconstructionParameters:
    img_size: int
    CR: int
    denoise: bool
    epochs: int
    learning_rate: float
    step_size: int
    gamma: float
    batch_size: int
    regularization: float
    N0: float
    sig: float

    arch_name: InitVar[str]

    _net_arch: int = field(init=False)

    def __post_init__(self, arch_name):
        self.net_arch = arch_name

    @property
    def net_arch(self):
        return str(netType(self._net_arch))

    @net_arch.setter
    def net_arch(self, arch_name):
        self._net_arch = int(netType[arch_name])


class netType(IntEnum):
    c0mp = 0
    comp = 1
    pinv = 2
    free = 3


a = ReconstructionParameters(
    img_size=64,
    CR=1024,
    denoise=True,
    epochs=20,
    learning_rate=1e-6,
    step_size=10,
    gamma=1e-7,
    batch_size=256,
    regularization=1e-6,
    N0=2500,
    sig=0.5,
    arch_name='c0mp')

print(a)
# ReconstructionParameters(img_size=64, CR=1024, denoise=True, epochs=20, learning_rate=1e-06, step_size=10, gamma=1e-07, batch_size=256, regularization=1e-06, N0=2500, sig=0.5, _net_arch=0)
print(a.net_arch)
# netType.c0mp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据类中的属性 的相关文章

  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 带括号的上下文管理器

    我试图了解新的新内容带括号的上下文管理器Python 3 10 中的功能 新功能中的顶部项目here https docs python org 3 10 whatsnew 3 10 html 我的测试示例是尝试编写 with open f
  • 将打开关闭的 Google Chrome 浏览器添加到 Selenium linkedin_scraper 代码中

    我正在尝试抓取一些知名人士的 LinkedIn 个人资料 该代码获取一堆 LinkedIn 个人资料 URL 然后使用Selenium and scrape linkedin收集信息并将其作为 json 文件保存到文件夹中 我遇到的问题是
  • Python 使用 M2Crypto 通过 S/MIME 对消息进行签名

    我现在花了几个小时 但找不到我的错误 我想要一个简单的例程来创建 S MIME 签名消息 稍后可以与 smtplib 一起使用 这是我到目前为止所拥有的 usr bin python2 7 coding utf 8 from future
  • 使用字母而不是数字进行顺序计数[重复]

    这个问题在这里已经有答案了 我需要一种方法 将字符串 递增 到 z 然后将 aa 递增到 az 然后将 ba 递增到 bz 依此类推 就像 Excel 工作表中的列一样 我将向该方法提供前一个字符串 它应该增加到下一个字母 PSEUDO C
  • 在加载“cv2”二进制扩展期间检测到递归

    我有一个小程序 在 pyinstaller 编译后返回 opencv 错误 但无需编译即可工作 我在 Windows 10 上使用 Python 3 8 10 Program 导入 pyautogui将 numpy 导入为 np导入CV2
  • 向 Python 2.6 添加 SSL 支持

    我尝试使用sslPython 2 6 中的模块 但我被告知它不可用 安装OpenSSL后 我重新编译2 6 但问题仍然存在 有什么建议么 您安装了 OpenSSL 开发库吗 我必须安装openssl devel例如 在 CentOS 上 在
  • 如何使用 jira-python 设置 fixVersions 字段

    我正在尝试使用 jira python 模块 http jira python readthedocs org en latest 更新现有的 JIRA 具体来说 我正在尝试设置问题的fixesVersion 列表 我已经尝试了一段时间但没
  • 如何使用 msgpack 进行读写?

    如何序列化 反序列化字典data with msgpack http msgpack org The Python 文档 http msgpack python readthedocs io en latest badge latest似乎
  • 如何在matplotlib中基于x轴更改直方图颜色

    我有根据 pandas 数据框计算出的直方图 我想根据 x 轴值更改颜色 例如 If the value is 0 the color should be green If the value is gt 0 the color shoul
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • Python 垃圾收集有时在 Jupyter Notebook 中不起作用

    我的一些 Jupyter 笔记本经常出现 RAM 不足的情况 而且我似乎无法释放不再需要的内存 这是一个例子 import gc thing Thing result thing do something thing None gc col
  • 在Python中计算结构体的CRC

    我有以下结构 来自 C 中的 NRPE 守护程序代码 typedef struct packet struct int16 t packet version int16 t packet type uint32 t crc32 value
  • C#中Enum中定义的value__是什么

    What value 可能在这里 value MSN ICQ YahooChat GoogleTalk 我运行的代码很简单 namespace EnumReflection enum Messengers MSN ICQ YahooChat
  • 请求response.iter_content()获取不完整的文件(1024MB而不是1.5GB)?

    您好 我一直在使用此代码片段从网站下载文件 到目前为止 小于 1GB 的文件都很好 但我注意到 1 5GB 文件不完整 s is requests session object r s get fileUrl headers headers
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • 从 csv 中读取 pandas 数据帧,以非固定标头开始

    我有许多数据文件是由我的实验室中使用的一些相当黑客的脚本生成的 该脚本非常有趣 因为它在标头之前附加的行数因文件而异 尽管它们具有相同的格式并具有相同的标头 我正在编写一个批处理来将所有这些文件处理为数据帧 如果我不知道位置 如何让 pan
  • Jupyter Notebook 中的多处理与线程

    我试图测试这个例子here https ipywidgets readthedocs io en stable examples Widget 20Asynchronous html将其从线程更改为多处理 在 jupyter Noteboo
  • 如何让你的精灵在pygame中跳跃

    目前我已经制作了一个平台游戏 可以左右移动我的角色 他从地上开始 关于如何让他跳的任何想法 因为我不明白 目前 如果我按住向上键 我的玩家精灵将连续向上移动 或者如果我按下它 我的玩家精灵将向上移动并保持向上 我想找个办法远离他 让我重新跌
  • 在Python中从列表中获取n个项目组的惯用方法? [复制]

    这个问题在这里已经有答案了 给定一个列表 A 1 2 3 4 5 6 是否有任何惯用的 Pythonic 方式来迭代它 就好像它是 B 1 2 3 4 5 6 除了索引之外 这感觉像是 C 的遗留物 for a1 a2 in A i A i

随机推荐

  • xna 防止下坡或上太陡的山

    如何防止在高度图地形上过于陡峭的斜坡或上山 我有一个可以在地形上移动的 3D 相机 它现在可以在任何地方移动 甚至在大斜坡和太陡的山丘上 我该怎么办 如果你试图朝一个方向移动 你应该预测你最终会到达哪里 然后弄清楚是否slope http
  • 检测拨出电话是否已接听

    Once ACTION NEW OUTGOING CALL已广播 我需要捕获对方回答的以下事件 您能否建议如何实现这一目标 我知道这是可能的 因为 Android 拨号器应用程序会在接听电话时将绿色 Android 图标更改为该人的照片 更
  • 能否以编程方式更改 ASP.NET 中的会话超时?

    可以吗 还是只能在IIS上配置 您通常编辑 Global asax 文件的 Session Start 方法并设置会话超时 http msdn microsoft com en us library system web sessionst
  • Hibernate 更新表架构

    我正在使用休眠3 我想将表的一列长度从 255 更新为 512 表已经有数据了 我尝试过 hbm2ddl auto update 但出现如下错误 错误 JDBCExceptionReporter 字符串或二进制数据将被截断 2011 年 5
  • Java中的信号处理库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想计算时间序列的功率谱密度 进行一些带通 低通和高通滤波 也许还有其他一些基本的东西 有没有一个不错的开源 Java 库可以做到这一点
  • COCOA 中的 PDF 到 JPG 转换

    在我的 cocoa 应用程序中 我需要将 pdf 的每一页保存为 jpg 我如何继续使用 Objective C Using pure Objective C Cocoa and PDF Kit http developer apple c
  • jQuery:如何全局获取整个文档正文中我悬停的最里面的 dom 元素?

    我想检测鼠标在整个文档主体上的移动 并能够准确地判断我将鼠标悬停在 DOM 的哪一部分上 我所说的 哪一部分 是指鼠标当前位于最里面的 DOM 元素 我可以将悬停绑定到整个文档正文 但是 this 会给我 body 而不是最里面的元素 或者
  • Python,美汤,获取所有类名

    给定一个 html 代码可以说 div class class1 span class class2 some text span span class class3 some text span span class class4 som
  • 警告使用函数指针的结构内部的匿名命名空间

    在我的程序中 Put this code in a separate header file struct S1 typedef struct int unused RETVAL typedef RETVAL MyFunc void res
  • 检查文件是否存在而不创建它

    如果我这样做 File f new File c text txt if f exists System out println File exists else System out println File not found 然后文件
  • python:更改符号变量并分配数值

    为了计算导数和其他表达式 我使用了 sympy 包并表示T sy Symbol T 现在我已经计算出正确的表达式 E T 2 F deriv T T rho where def F deriv rho T rho ret 0 for n i
  • 如何将VueJS中的属性对象传递给组件来修改它?

    将 VueJS 中的属性对象传递给组件并在那里修改它的最佳实践是什么 例如 人员表 姓名 名字 年龄 性别等 单击某个条目后 会弹出一个对话框 您可以在其中修改该条目 如果我通过 props 将条目传递给组件并修改它 我会收到 错误消息 避
  • D3.js:饼图,仅向外部区域添加边框

    我在 D3 中得到了一个饼图 并用笔画分隔了每个切片 但是 我想仅向切片的外部区域添加边框 而不是在连续线上添加边框 而是尊重原始切片中的笔划创建的间隙 请参阅我的图片以进行澄清 关于如何做到这一点有什么想法吗 See http jsfid
  • npm更新成功,但仍然显示旧版本

    当我做一个npm v我发现我仍然使用 5 6 0 并不断收到执行操作的提示npm i npm 但我已经做了一个sudo npm install npm latest g并用 a 进行双重检查npm outdated g depth 0看到我
  • MySQL命名约定,字段名应该包含表名吗?

    有朋友告诉我 我应该在同一个表的字段名中包含表名 我想知道为什么 而且应该是这样吗 例子 Table Users Fields user id username password last login time 我发现前缀 user 毫无意
  • “范围的坐标或尺寸无效”

    我正在开发一个与 REST API 链接并将数据放入 Google 表格的 Google Apps 脚本 我已经成功完成一次此操作 但是在访问一些不同的数据时 我收到错误消息 范围的坐标或尺寸无效 当它们在我的其他脚本上完美运行时 访问的所
  • 假设不变的 ASCII 编码,用 Rubyist 方法解码该编码字符串

    我的程序是二进制协议的解码器 该二进制协议中的字段之一是编码的String 中的每个角色String是可打印的 并且代表一个整数值 根据我正在解码的协议的规范 它表示的整数值取自下表 其中列出了所有可能的字符 Character Value
  • 依赖项的 Maven 项目变量

    我有一个加载小程序的 html 文件 html需要通过名称引用jar 并且由于maven根据artifactid 版本等对其进行命名 因此html需要随着项目的发展动态更新 似乎资源过滤是可行的方法 但我无法弄清楚要插入的变量应该是什么样子
  • jQuery 动画小数递增/递减

    我想一步一步地动画两个十进制数之间的差异 已经发现乔斯 克劳克罗夫特的解决方案 http www josscrowcroft com 2011 code jquery animate increment decrement numeric
  • 数据类中的属性

    描述 我正在尝试实现一个仅包含几个参数的简单数据类 dataclass class ReconstructionParameters img size int CR int denoise bool epochs int learning