zoukankan      html  css  js  c++  java
  • python魔法函数的一些疑问

    看了魔法函数,有一点疑问。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()
  • 相关阅读:
    openpyxl(python操作Excel)
    python爬虫之数据加密解密
    python爬虫之字体反爬
    识别缩略图加载
    Windows文件共享自动失效解决办法
    pygame
    获取文件路径、文件名、后缀名
    Oracle EBS INV 挑库发放物料搬运单
    Oracle EBS INV 删除保留
    Oracle EBS INV 创建货位
  • 原文地址:https://www.cnblogs.com/alexkn/p/4652914.html
Copyright © 2011-2022 走看看