码迷,mamicode.com
首页 > 编程语言 > 详细

python魔法函数的一些疑问

时间:2015-07-17 11:31:00      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

看了魔法函数,有一点疑问。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()

 

python魔法函数的一些疑问

标签:

原文地址:http://www.cnblogs.com/alexkn/p/4652914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!