是否有可能间接访问python中的当前类名?

时间:2016-05-11 05:44:25

标签: python

我有点厌倦了输入MyLongAdvancedClassName._template来访问类变量。它们有时是常数,但并非总是如此。你会说我想在常量的情况下使用模块全局变量。但我希望将它们定义在使用地点附近,而不是在文件的开头。我也不喜欢本地人,因为如果是长字符串,你会在每次调用时重新分配它。

是否可以执行以下操作:

_c = MyLongAdvancedClassName

class MyLongAdvancedClassName:
    ...

    _template = " My long advanced text %i "
    def method(self):
        print _c._template

2 个答案:

答案 0 :(得分:3)

您可以在python中使用 self 关键字,而不是使用当前的类名。

class MyLongAdvancedClassName:
    ...

    _template = " My long advanced text %i "
    def method(self):
        print self._template

希望它有所帮助。

答案 1 :(得分:2)

你正在寻找的是使用自我(看看San的回答)。 但是,这需要您拥有该类的实例。 如果你想用类本身来做,那么你可以像这样使用classmethod装饰器:

class MyLongAdvancedClassName:
    ...

    _template = " My long advanced text %i "
    @classmethod
    def method(cls):
        print cls._template