【问题标题】:In python how to get name of a class inside its static method在python中如何在其静态方法中获取类的名称
【发布时间】:2011-01-14 14:13:09
【问题描述】:

如何在静态方法中获取类的名称,我有继承 并想要派生类的名称

在下面的示例中,方法 my_name() 中的 XXX 应该有什么

class snake()
   @staticmethod
   def my_name():  
      print XXX.__name___

class python (snake)
   pass
class cobra (snake)
   pass

python.my_name()
# I want output to be python

cobra.my_name()   
# I want output to be cobra

【问题讨论】:

标签: python


【解决方案1】:

我很确定这对于静态方法是不可能的。改用类方法:

class Snake(object):
    @classmethod
    def my_name(cls):  
        print cls.__name__

【讨论】:

  • 正如 Lennart 所说,这并非“不可能”,但这是一个非常糟糕的主意。假设我从未说过以下内容,但是……您可以使用带有inspect.currentframe()inspect 模块,然后加载并搜索源文件以找到函数的名称,然后找到它的类。 :-)
【解决方案2】:

Python 中的静态方法在所有意图和目的上都只是一个函数。它对类一无所知,所以你不应该这样做。这可能是可能的,大多数事情都是如此。但这是错误的。 :)

在这种情况下,您显然确实关心类,因此您不需要静态方法。 所以使用类方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    相关资源
    最近更新 更多