標籤:
看了魔法函數,有一點疑問。1中需要用self.word才能執行,而2直接用self就可以執行。而1中Word繼承了int基本類型,但在__new__時並沒有什麼卵用。當用
Word(“123”)來執行個體化時,看到的運算結果是以字串形式來進行運算的,比如“123”*3=123123123。
1.
class Word(int): def __new__(cls, word): word = int(word) return int.__new__(cls,word) def __init__(self,word): self.word = word def __add__(self, other): return self.word+other def __sub__(self,other): return self.word-other def __mul__(self, other): return self.word*other def __div__(self, other): return sself.word/otherdef main(): a=Word(123) b=Word(12) print a-bif __name__ == ‘__main__‘: main()
2.
class Word(str): def __new__(cls, word): word = word.replace(" ","") return str.__new__(cls,word) def __init__(self,word): self.word = word def __gt__(self, other): return len(self)>len(other) def __lt__(self,other): return len(self)<len(other) def __ge__(self, other): return len(self)>=len(other) def __le__(self, other): return len(self)<=len(other) def __eq__(self, other): return len(self)==len(other)def main(): a=Word("foorrrdd") b=Word("sswwss") print a==bif __name__ == ‘__main__‘: main()
python魔法函數的一些疑問