2013-11-03 58 views
0
class SList: 
    def __init__(self): 
     self.s1 = ['hey'] 
    def take(self, item): 
     self.s1 += [item] 
     return self.s1 
    def size(self): 
     size = len(self.s1) 
     return size 

if __name__ == "__main__" : 
    s1 = SList() 
    print('hello') 
    s1.take(33) 
    s1.take(42) 
    s1.take(55) 
    s1.size() 
    print(s1) 
    print(s1.size()) 

對類不太熟悉,寫這個比概念證明更能說明任何事情,所以我可以熟悉它。我似乎無法找出爲什麼從這個輸出是:Python類輸出十六進制值而不是列表,不知道爲什麼?

hello

<__main__.SList object at 0x3323ed0>

4

hello4是我想要的方式,但我似乎得到了s1的十六進制值,當我需要s1輸出時:['hey', 33, 42, 55]

哇哇得到s1輸出正確的列表?

回答

0

我認爲你應該重寫str方法來輸出你想得到的。

0

添加的reprstr一個控制裝置:

class SList: 
    def __init__(self): 
     self.s1 = ['hey'] 

    def take(self, item): 
     self.s1 += [item] 
     return self.s1 

    def size(self): 
     size = len(self.s1) 
     return size 

    def __repr__(self): 
     return repr(self.s1) 

if __name__ == "__main__" : 
    s1 = SList() 
    print('hello') 
    s1.take(33) 
    s1.take(42) 
    s1.take(55) 
    s1.size() 
    print(s1) 
    print(s1.size()) 

這就足夠了你的情況:

你好

[ '哎',33,42,55]

documentation__repr__

由再版(被叫)內置函數串轉換(保留引號)來計算對象的「正式」字符串表示。如果可能的話,這應該看起來像一個有效的Python表達式,可用於重新創建具有相同值的對象(給定適當的環境)。如果這是不可能的,一個形式爲<的字符串...應該返回一些有用的描述。返回值必須是一個字符串對象。如果一個類定義了repr()而不是str(),則repr()也用於需要該類的實例的「非正式」字符串表示形式。

這通常用於調試,所以重要的是表示信息豐富和明確。

爲了完整起見,你也可以覆蓋__str__

由STR(被叫)內置函數和print語句來計算對象的「非正式」的字符串表示。這不同於repr(),因爲它不一定是有效的Python表達式:可以使用更方便或簡潔的表示法代替。返回值必須是一個字符串對象。

0

代替

print(s1) 

使用

print(s1.s1) 

在原來的情況下,你要打印SLIST類的實例對象。

相關問題