您的位置:首页 > 编程语言 > Python开发

python魔法函数的一些疑问

2015-07-17 09:53 579 查看
看了魔法函数,有一点疑问。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/other

def main():
a=Word(123)
b=Word(12)
print a-b
if __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==b
if __name__ == '__main__':
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: