首页 > 编程问答 >python 的注释(例如数据类)可以扩展到它生成的代码中吗?

python 的注释(例如数据类)可以扩展到它生成的代码中吗?

时间:2024-07-23 14:18:27浏览次数:14  
标签:python python-dataclasses

能看出python的注释扩展成​​什么吗? 例如,对于与数据类相关的错误,有时试图找出它实际生成的代码有点棘手。

例如:

@dataclass(order = True)
class Person:
   name: str
   age:int = 0
class Person:
  def __init__(self, name:str, age=0):
      self.name = name
      self.age = age
  def __repr__...

  def __eq__(self, other):
    return (self.name, self.age) == ( other.name, other.age)

或者如果不可能,除了检查注释之外,您通常如何找出它们扩展的内容源代码?

例如Racket有一个强大的宏扩展机制,python有等效的东西吗?


Python 的注释不会像 Racket 中的宏那样直接扩展到代码中。Python 中的注释旨在提供信息并被解释器忽略。

查看数据类生成的代码

虽然不能直接看到注释扩展的代码,但有几种方法可以检查数据类生成的代码:

  1. 使用 inspect 模块:

```python import inspect from dataclasses import dataclass

@dataclass(order=True) class Person: name: str age: int = 0

print(inspect.getsource(Person)) ```

这将打印出为 Person 类生成的源代码,包括 __init__ __repr__ __eq__ 等方法。

  1. 使用调试器:

可以在调试器中运行代码,并在数据类实例化后检查其属性和方法。这可以让了解生成的代码的行为方式。

Python 中的元编程

尽管 Python 没有像 Racket 那样强大的宏系统,但它提供了强大的元编程功能:

  • 装饰器: 如在数据类示例中所见,装饰器允许修改函数或类的行为。
  • 元类: 元类允许在类创建时控制类的定义。
  • 动态代码执行: eval exec 函数允许在运行时执行字符串形式的 Python 代码。

这些功能可以让实现复杂的行为,类似于在 Racket 中使用宏所实现的行为。但是,Python 中的重点是保持代码的清晰性和可读性,因此不鼓励过度使用元编程。

结论

  • Python 注释不扩展到代码中。
  • 可以使用 inspect 模块或调试器检查数据类生成的代码。
  • Python 提供了元编程功能(如装饰器和元类),可以使用这些功能实现复杂的行为,类似于在 Racket 中使用宏所实现的行为。

标签:python,python-dataclasses
From: 57246169

相关文章

  • Docker:无法在 docker 映像中使用 pythonnet 和 |无法创建默认的 .NET 运行时,该运行时
    我正在尝试使用clrfromPythonnet使用.DLL引用将一种文件类型转换为另一种文件类型。这就是我的代码的样子-importclrclr.AddReference(dll_path)importRxLibrary#ConverttoASCFormat-----------input_file=f"./{filename}.rxd"......
  • 在 Python 中以非常高的质量保存图像
    如何以非常高的质量保存Python绘图?也就是说,当我不断放大PDF文件中保存的对象时,为什么没有任何模糊?另外,什么是最好的模式将其保存在?png,eps?或者其他的?我不能pdf,因为有一个隐藏的数字会扰乱Latexmk编译。要以非常高的质量保存Py......
  • Python字符串:提取重复和随机合并的子字符串
    重复和合并字符串的示例:16.01068.0%08p%.a.p.a.要提取的所需子字符串:16.008%p.a.完整示例:CCoonnttiinnggeennttCCoouuppoonn16.01068.0%08p%.a.p(.Ma.o(nMtholyn)thly)所需子字符串:ContingentCoupon16.008%p.a.(Monthly)我的问题是当原始......
  • Python Pandas 从使用第 3 部分 API 自动生成的 Excel 文件中读取不一致的日期格式
    我正在使用PDF4meAPI将PDF发票转换为Excel文件。API可以正确读取日期。但是,当我打开Excel文件时,日期显示不一致:某些日期以正确的格式(dd/mm/yyyy)显示,而其他日期以错误的mm/dd/yyyy格式显示。当该月的某天小于或等于12时,似乎会出现这种不一致。......
  • python-input键盘输入
     str=input("请输入:")#用户键盘输入#str表示一个字符串类型的变量,input会将读取到的字符串放入str中print(str) aa='请输入:'str=input(aa)#用户键盘输入#str表示一个字符串类型的变量,input会将读取到的字符串放入str中print(str)      ......
  • Python从0到100(四十五):从字符串到前后端分离
    前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知......
  • Python的运算符与条件表达式
    一、运算符Python数据是通过使用运算符来进行操作的,与数学运算符类似,主要运用于数字计算,比较大小和逻辑运算。Python中的运算符主要包括算术运算符、赋值运算符、比较运算符、逻辑运算符和位运算符。1.算术运算符算术运算符用在数字表达式中,作用和在数学中是一样的。Python......
  • 在尝试使用 docker 运行基于 pythonnet 的项目时,找不到 C# 运行时
    屏幕截图我不断收到此错误:RuntimeError:Failedtocreateadefault.NETruntime,whichwouldhavebeen"mono"onthissystem.Eitherinstallacompatibleruntimeorconfigureitexplicitlyvia......
  • Python 在模块中使用变量
    如何将一个文件中声明的变量调用到另一个文件中?大家好我已经在file1中声明了我的变量。我的函数位于file2中,它使用该变量。如何调用主文件中声明的变量。提前致谢当然可以!以下是如何在Python中跨文件使用变量:file1.py(包含变量的文件)#在file1.p......
  • Python 类型提示和 linter
    我一直在向我们的python项目添加静态类型检查,例如像这样:fromtypingimportListfromsomethingimportMyOtherClassclassMyClass:def__init__(self)->None:self.some_var=None#type:List[MyOtherClass]但是,现在我们使用的linter(flake8和......