2016-03-06 82 views
0

說類的實例是printHelloHello
現在,當我執行下面的代碼
print printHello
輸出爲"HelloPrinted"
現在我想比較printHello用字符串類型,無法實現,因爲printHello是類型的實例。 有沒有一種方法來捕獲print printHello代碼的輸出並將其用於比較或將printHello的類型轉換爲字符串,我可以將其用於其他字符串比較? 任何幫助表示讚賞。如何將實例轉換爲Python中的字符串類型?

+1

這是非常難以遵循的。請添加上下文的代碼。 – Chris

+0

您的比較目標是什麼?如果你想查看對象是否是某種類型,使用'isinstance(printHello,Hello)'。 – tdelaney

+0

如何在世界上做一個名爲「你好」的類最終以便'print printHello'導致'「HelloPrinted」'? 'Hello'有'__str__'或'__repr__'方法嗎?你可以用'printHello .__ class __.__ name__'得到這個類的名字,這就是你想要的嗎? – tdelaney

回答

0

我想你想:

string_value = printHello.__str__() 

if string_value == "some string": 
    do_whatever() 

__str__()方法由print製作類對象的意義。

+0

我得到了以下錯誤 >> AttributeError:Hello實例沒有屬性'__str__' – user2518

+0

請參閱其他答案。 – Will

1

__repr__應該在你的類中定義的用於此目的的特殊方法:

class Hello: 
    def __init__(self, name): 
     self.name= name 

    def __repr__(self): 
     return "printHello" 
2

如果你想特別比較字符串,你可以用兩種不同的方式做到這一點。首先是定義爲類的__str__方法:

class Hello: 
    def __init__(self, data="HelloWorld"): 
     self._data = data 
    def __str__(self): 
     return self._data 

然後,你可以比較一個字符串:

h = Hello() 
str(h) == "HelloWorld" 

或者你可以專門使用__eq__特殊功能:

class Hello: 
    def __init__(self, data="HelloWorld"): 
     self._data = data 
    def __str__(self): 
     return self._data 
    def __eq__(self, other): 
     if isinstance(other, str): 
      return self._data == other 
     else: 
      # do some other kind of comparison 

然後您可以執行以下操作:

h = Hello() 
h == "HelloWorld" 
相關問題