2016-02-26 69 views
1

比方說,我有下面的類:表示的方法在Python

class Human(object): 
    def __init__(self, name, last_name): 
     self.name = name 
     self.last_name = last_name 

    def get_last_name(self): 
     return self.last_name 

而且我知道我可以爲它定義一個__repr__方法:

def __repr__(self): 
     return "Human being, named " + str(self.name) + " " + str (self.last_name) 

然而,是什麼如果我要定義一個單獨的表示爲lastname方法,太?即,如果這是一個示例:

>>> me = Human("Jane", "Doe") 
>>> me 
Human being, named Jane Doe 
>>> me.get_last_name() 
'Doe' 

...然後我想最後的輸出不僅字符串'Doe'本身,而是像Human being's last name is Doe - 怎樣才能做到呢?如何定義一個__repr__(或__str__)的方法的方法?

謝謝。

回答

1

不能使用一個特殊的屬性函數或其他屬性。在這種情況下,因爲你有self.last_name__init__功能,而不是get_last_name()返回回你可以last_name應用預期的變化在這裏和返回預期的格式。如果你想查看原始數據,你可以直接訪問last_name

me = Human("Jane", "Doe") 
print(me.last_name) 
+0

即,爲了使'Doe''和'人的姓都是Doe',我必須定義兩個不同的方法,像'get_last_name()'和' get_last_name_gorgeously()'?沒有其他辦法嗎? –

+0

@AS抱歉,我不能幫你。當你想單獨表示時,你需要使用不同的呼叫者。其他方面,結果將是相同的。或者,也許根據不同的輸入生成單獨的輸出。 – Kasramvd

1

如果你想可讀表示重寫__str__方法。爲了獲得明確輸出覆蓋__repr__

+0

是啊,得到了[早已](https://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python),謝謝! –