python - python 中的宏

标签 python macros code-generation macropy

在我的项目中,我必须经常重复这样的代码部分:

class SimplePhysicObject(Object):
    def __init__(self):
        super(Object, self).__init__('SimplePhysicObject')

但不是 SimplePhysicObject 每次都有新的字符串。有什么方法可以编写一些宏来简化这项工作吗?像这样的东西:

DoTemplate(NewObject)
==>
class NewObject(Object):
    def __init__(self):
        super(Object, self).__init__('NewObject')

UPD 抱歉,Object 是我之前在代码中声明的自己的类

最佳答案

我不明白为什么 Object 需要实际的类名作为参数。您可以通过 self.__class__.__name__ 访问 Object 中的实际类名:

class Object(object):
    def __init__(self):
        self.name = self.__class__.__name__

class SimplePhysicObject(Object):
    pass

a = SimplePhysicObject()
print a.name

将打印

SimplePhysicObject

这与您的原始代码略有不同:如果您从 SimplePhysicObject 派生,name 属性将设置为派生类的名称,而您的原始代码将继续使用 "SimplePhysicObject"

关于python - python 中的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675569/

相关文章:

python - 如何让我的 Sprite (敌方 Sprite )自己移动?

Python - 压缩时的星号

c# - TT 生成器中的辅助方法

serialization - Julia:在运行时生成代码并将其存储以供将来评估/执行

matlab - 二阶摆模型的 NMPC 优化

python - 我如何使用python(pywin32)更改word中表格的大小

Python动态循环终止变量

latex - 是否有 LaTeX 命令使文本全部为小写?

macros - 如何编写宏自动解析符号

macros - 为 RPM 宏提供一个带空格的参数