在我的项目中,我必须经常重复这样的代码部分:
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/