gt6*_*89b 1 python classname python-2.7
我上课了
class MyClass(object):
ClassTag = '!' + 'MyClass'
Run Code Online (Sandbox Code Playgroud)
而不是显式分配'MyClass'我想使用一些构造来获取类名.如果我在一个类函数中,我会做类似的事情
@classfunction
def Foo(cls):
tag = '!' + cls.__class__.__name__
Run Code Online (Sandbox Code Playgroud)
但是这里我在类范围内但不在任何函数范围内.解决这个问题的正确方法是什么?
非常感谢你
而不是显式分配'MyClass'我想使用一些构造来获取类名.
您可以使用类装饰器结合__name__类对象的属性来完成此任务:
def add_tag(cls):
cls.ClassTag = cls.__name__
return cls
@add_tag
class Foo(object):
pass
print(Foo.ClassTag) # Foo
Run Code Online (Sandbox Code Playgroud)
除上述内容外,以下是一些附注:
从上面的示例可以看出,类是使用class关键字而不是def关键字定义
的.该def关键字是用于定义功能.我建议您阅读Python提供的教程,以掌握Python基础知识.
如果您没有处理遗留代码或需要Python 2库的代码,我强烈建议您升级到Python 3.除了Python Foundation将在2020年停止支持Python之外,Python 3还修复了Python 2所具有的许多怪癖,并提供了新的有用功能.如果您正在寻找有关如何从Python 2过渡到3的更多信息,那么一个好的起点就在这里.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |