2017-08-28 74 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() 
相關問題