• python特殊方法


    源码:

    # 特殊方法,也称为魔术方法
    # 特殊方法都是使用__开头和结尾的
    # 特殊方法一般不需要我们手动调用,需要在一些特殊情况下自动执行
    
    # 定义一个Person类
    class Person(object):
        """人类"""
        def __init__(self, name , age):
            self.name = name
            self.age = age
    
        # __str__()这个特殊方法会在尝试将对象转换为字符串的时候调用
        # 它的作用可以用来指定对象转换为字符串的结果  (print函数)  
        def __str__(self):
            return 'Person [name=%s , age=%d]'%(self.name,self.age)        
    
        # __repr__()这个特殊方法会在对当前对象使用repr()函数时调用
        # 它的作用是指定对象在 ‘交互模式’中直接输出的效果    
        def __repr__(self):
            return 'Hello'        
    
        # object.__add__(self, other)
        # object.__sub__(self, other)
        # object.__mul__(self, other)
        # object.__matmul__(self, other)
        # object.__truediv__(self, other)
        # object.__floordiv__(self, other)
        # object.__mod__(self, other)
        # object.__divmod__(self, other)
        # object.__pow__(self, other[, modulo])
        # object.__lshift__(self, other)
        # object.__rshift__(self, other)
        # object.__and__(self, other)
        # object.__xor__(self, other)
        # object.__or__(self, other)
    
        # object.__lt__(self, other) 小于 <
        # object.__le__(self, other) 小于等于 <=
        # object.__eq__(self, other) 等于 ==
        # object.__ne__(self, other) 不等于 !=
        # object.__gt__(self, other) 大于 >
        # object.__ge__(self, other) 大于等于 >= 
        
        # __len__()获取对象的长度
    
        # object.__bool__(self)
        # 可以通过bool来指定对象转换为布尔值的情况
        def __bool__(self):
            return self.age > 17
    
        # __gt__会在对象做大于比较的时候调用,该方法的返回值将会作为比较的结果
        # 他需要两个参数,一个self表示当前对象,other表示和当前对象比较的对象
        # self > other
        def __gt__(self , other):
            return self.age > other.age
    
    
    # 创建两个Person类的实例        
    p1 = Person('孙悟空',18)
    p2 = Person('猪八戒',28)
    
    # 打印p1
    # 当我们打印一个对象时,实际上打印的是对象的中特殊方法 __str__()的返回值
    # print(p1) # <__main__.Person object at 0x04E95090>
    # print(p1)
    # print(p2)
    
    # print(repr(p1))
    
    # t = 1,2,3
    # print(t) # (1, 2, 3)
    
    # print(p1 > p2)
    # print(p2 > p1)
    
    # print(bool(p1))
    
    # if p1 :
    #     print(p1.name,'已经成年了')
    # else :
    #     print(p1.name,'还未成年了')
  • 相关阅读:
    JS学习之构造函数、原型、原型链
    JS学习之面向对象(面向对象的创建方法,new运算符的工作原理)
    JS学习之事件流
    JS学习之生命周期与垃圾回收机制
    关于在XP操作系统和IIS5.1环境下的MVC环境搭建之IIS错误
    VS2010、.net 4.0下MVC3开发中Code First开发模式的数据迁移小结
    关于MVC3框架下的Jquery异步请求函数的学习心得之一——$.post()
    关于ASP调用存储过程的经典资料转载
    关于windows环境下的IIS 500内部服务器错误的一种解决办法
    接VS2010+Net+MVC3+EF4.1环境下的Code First一文的补充说明
  • 原文地址:https://www.cnblogs.com/FlyingLiao/p/11337349.html
Copyright © 2020-2023  润新知