2017-08-28 41 views
0

我对编程有点新,并不真正知道如何搜索这个特定问题的答案,所以我想我会分享一个例子为了说明我的观点。我目前正在编写一个脚本,将我的类的实例(名为申请人)添加到其他地方的mongo数据库中。我的问题是,在我的许多方法中,我需要从函数中返回类的名称,以便返回的值可以用作另一个调用中的参数。下面是一个示例如何返回作为参数使用的类的名称

modelName = get_class().getModelName() 

在上面的代码中,我试图检索特定数据模型的名称。我的想法是编写两个方法,一个用于返回可找到模型名称的类的名称,另一个用于返回实际模型名称。这是在一个抽象类中完成的,以便我的子类的功能可以被推广(否则我会直接放置模型名称和类名称)。我不确定的是如何编写一个方法,该方法将以与上述使用兼容的格式返回类的名称。例如,如果我在一个名为Rushee的类中编写方法,那么它应该能够以rushee.getModelName()将工作的方式返回'rushee'。

任何想法都会非常有帮助。谢谢!

回答

1

要获得类的名称,你可以使用此代码

class SomeClass(): 
    def getName(self): 
     return self.__class__.__name__ 
1

IIUC,你可以使用一个对象的属性__class__得到,这是一个实例的类的名称。

In [60]: class Foo(): 
    ...:  pass 
    ...:  
    ...:  

In [61]: x.__class__ 
Out[61]: __main__.Foo 

这将返回全名(包括对象所属的命名空间),所以只得到了最后,你会做x.__class__.__name__

0

这里有一个方法

class Grid: 
    pass 

g = Grid() 
type(g).__name__ 

这类似于COLDSPEED发布更早:

g.__class__.__name__ 
0

在一个类层次结构:

class A(): 
    def get_class_name(self): 
     return self.__class__.__name__ 

class B(A): 
    pass 

b = B() 

print(b.get_class_name()) 

OUTPUT:

B 
0
class Rushee: 
    def get_model_name(self): 
     return "return something" 


class Other: 
    def __init__(self): 
     self.rushee = Rushee() 

    def class_name(self): 
     return self.rushee.__class__.__name__ 


if __name__ == "__main__": 
    other = Other() 
    other.class_name() 
相关问题