- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Python 3.7 引入了包含 @dataclass
装饰器的 dataclasses
模块。这个装饰器可以生成类函数。如何打印这些生成的函数?
câu trả lời hay nhất
我自己也问过同样的问题。 Dataclasses
part project 应该有 verbose 选项,但没有。
发现这个băng hình ,有帮助。根据视频 dataclasses.py 是一个代码生成器。所以这应该是我们如何获取代码的第一个想法。
我试过这段代码:
from dataclasses import dataclass
import inspect
nhập khẩu chúng
from uncompyle6 import PYTHON_VERSION, deparse_code2str
@dataclass
class C:
name: str
value: int = 34
inspect.getmembers(C) #('__init__', None>)
co= C.__init__.__code__ # let's find out code for the __init__ method from code object
code = deparse_code2str(
code=co,
version=PYTHON_VERSION,
out=open(os.devnull, "w"))
print(code)
将打印
self.name = name
self.value = value
代码实际上使用检查器来理解类,然后使用 Python 反编译器反编译方法。
这里是发现的方法:
def __eq__(self, other):
if other.__class__ is self.__class__:
return (self.name, self.value) == (
other.name,
other.value,
)
khác:
return NotImplemented
def __init__(self, name: str, value: int = 34) -> None:
self.name = name
self.value = value
def __repr__(self):
key = (id(self), _thread.get_ident())
if key in repr_running:
return "..."
khác:
repr_running.add(key)
thử:
result = user_function(self)
Cuối cùng:
repr_running.discard(key)
return result
实际上有一个project那是在做@dataclass 发现。我安装了它并且运行良好。
from dataclasses import dataclass
import inspect
nhập khẩu chúng
import dis
from DataclassInspector.inspector import Inspector
@dataclass
class C:
name: str
value: int = 34
inspected = Inspector(C)
print(inspected._generate_code())
提供这样的输出:
from dataclasses import Field, _MISSING_TYPE, _DataclassParams
class C:
__dataclass_fields__ = {'name': "Field(name='name', type=str, default=_MISSING_TYPE, default_factory=_MISSING_TYPE, init=True, repr=True, hash=None, compare=True, metadata={}, _field_type=_FIELD)", 'value': "Field(name='value', type=int, default=34, default_factory=_MISSING_TYPE, init=True, repr=True, hash=None, compare=True, metadata={}, _field_type=_FIELD)"}
__dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)
name: str
value: int = 34
def __eq__(self, other):
if other.__class__ is self.__class__:
return (self.name, self.value) == (other.name, other.value)
khác:
return NotImplemented
__hash__ = None
def __init__(self, name: str, value: int = 34) -> None:
self.name = name
self.value = value
def __repr__(self):
key = (
id(self), _thread.get_ident())
if key in repr_running:
return '...'
khác:
repr_running.add(key)
thử:
result = user_function(self)
Cuối cùng:
repr_running.discard(key)
return result
关于python - 如何显示使用@dataclass 类装饰器时生成的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53382033/
c1 和c2 的构造函数中的默认值应该为b 和b 生成新的实例变量。相反,它看起来像 c1.a 和 c2.a 引用了同一个变量。 @dataclass 是否正在创建类变量?这似乎与预期的功能不一致,而
这个问题已经有答案了: C# - Cannot implicitly convert type List to List (6 个回答) Why does this generic cast fail
đóng cửa. Câu hỏi này dựa trên ý kiến. Hiện tại nó không chấp nhận câu trả lời. Bạn muốn cải thiện vấn đề này? Cập nhật câu hỏi để có thể trả lời bằng các sự kiện và trích dẫn bằng cách chỉnh sửa bài đăng này. Đã đóng vào năm ngoái. Cải thiện điều đó
如何让它在 @dataclass 修饰的 Python 类中设置拼写错误的字段时引发异常? 我想要一个实用的方法来做到这一点。我是否需要改为编写自己的装饰器? @dataclass class C(o
Field 的文档python 标准类 dataclasses模块仅指定: Its documented attributes are: [...] type: The type of the fie
我正在尝试比较从公共(public)基类(也是@dataclass)继承的两个数据类。 继承类的字段是自己特有的,比较时不考虑;我只想比较基类属性。 这是我的尝试: from dataclasses
我试图在整个应用程序中使用整数和文本。我是通过使用 DataClass 来这样做的,并且我已经得到了可以工作的整数。但是,我不确定如何使用文本。我很确定使用 UILabel 是不正确的。我将在下面向您
我正在使用来自 dataclasses 的 dataclass 和 asdict ,我发现 asdict 并不像我在引入继承时所期望的那样工作。 我使用 dataclasses 来帮助我从类创建字典,
Python 3.7 引入了包含 @dataclass 装饰器的 dataclasses 模块。这个装饰器可以生成类函数。如何打印这些生成的函数? 最佳答案 我自己也问过同样的问题。 Dataclas
我有一堆@dataclass es 和一堆对应的 TypedDict s,我想促进它们之间的平滑和类型检查转换。 例如,考虑 from dataclasses import dataclass fro
我已经使用 highchart 绘制了一个热图,但我想为 y 轴提供颜色范围,即数据数组中的第二个索引,但它会自动采用第三个索引。 下面是jsfiddle代码。 Links for my code
Python 3.7 引入 dataclasses来存储数据。我正在考虑采用这种新方法,这种方法比字典更有条理,结构更合理。 但我有一个疑问。 Python 将键转换为 dicts 上的哈希,这使得查
在下面的代码中,astuple 函数正在对数据类的类属性进行深度复制。为什么它不会产生与函数 my_tuple 相同的结果? import copy import dataclasses @datac
总结 我有一个包含 10 多个字段 的数据类。 print()将它们隐藏在默认值墙中的有趣上下文 - 让我们通过避免不必要地重复这些来使它们更友好。 Python 中的数据类 Python 的 @da
我有一个数据类,它看起来像这样: @dataclass class myClass: id: str mode: str value: float 这导致: dataclasses.
我有一个类,我们称它为 Builder。它有一个私有(private)成员声明为 vector> buffers; // Node is a pure data class. 在这个 Builder
Python 3.7 提供了新的 dataclasses,它们具有预定义的特殊功能。 从总体上看,dataclasses 和 SimpleNamespace 都提供了很好的数据封装工具。 @datac
我试图在我的单元测试中使用 freezegun 来修补数据类中的一个字段,该字段设置为对象初始化时的当前日期。我想这个问题与任何尝试修补一个在 freezegun 之外用作 default_facto
我想使 set 参数可选,但仍允许 None 为有效值。基于the documentation , 它建议 dataclasses.MISSING 可以使用默认值来帮助实现这一点。 As shown
我想使 set 参数可选,但仍允许 None 为有效值。基于the documentation , 它建议 dataclasses.MISSING 可以使用默认值来帮助实现这一点。 As shown
Tôi là một lập trình viên xuất sắc, rất giỏi!