获取当前课程的名称?
我如何获得我目前所在班级的名字?
例:
def get_input(class_name):
[do things]
return class_name_result
class foo():
input = get_input([class name goes here])
由于程序的性质,我与(vistrails)接口,我不能使用__init__()
来初始化input
。
obj.__class__.__name__
将为您提供任何对象名称,因此您可以执行此操作:
class Clazz():
def getName(self):
return self.__class__.__name__
用法:
>>> c = Clazz()
>>> c.getName()
'Clazz'
在类的主体中,类名尚未定义,因此它不可用。 你不能简单地输入班级的名字吗? 也许你需要更多地说出这个问题,以便我们为你找到解决方案。
我会创建一个元类来为你做这个工作。 它在创建类的时候被调用(概念上在类的最后部分),并且可以操作正在创建的类。 我没有测试过这个:
class InputAssigningMetaclass(type):
def __new__(cls, name, bases, attrs):
cls.input = get_input(name)
return super(MyType, cls).__new__(cls, name, bases, newattrs)
class MyBaseFoo(object):
__metaclass__ = InputAssigningMetaclass
class foo(MyBaseFoo):
# etc, no need to create 'input'
class foo2(MyBaseFoo):
# etc, no need to create 'input'
你可以通过类的私有属性访问它:
cls_name = self.__class__.__name__
编辑:
正如Ned Batcheler
,这不会在班级体内工作,但它会在一种方法中。