类的一些内置方法

内置方法

凡是数据类型 都会或多或少带一些 双下方法

双下方法 : __init__ __str__ __xxx__

在各python书种也称为 魔术方法 内置方法

特点:不正经的,调用的时候总是不好好调用

例子:

'abc'.split('b') # 正经调用str类型的split方法

print('abc' + 'efg')  # 直观

ret = 'abc'.__add__('efg')  # 不直观,不正经调用方法
print(ret)

重要方法

  • __str__

    默认打印对象会打印的则是对象的内存地址,但是地址对我来说没有作用类中定义__str__方法,return 回来,相当于替换掉 默认打印对象的内存地址,注意 :return回来的必须是一个字符串的内容

    比如print(obj) (obj是一个对象)的时候,其实总是调用的obj.__str__(),打印的是这个方法的返回值

    方便做打印(类如注释)

    # __str__
    class Course:
    course_lst = []
    def __init__(self,name,period,price):
    self.name = name
    self.period = period
    self.price = price
    def __str__(self):
    return '%s,%s,%s'%(self.name,self.period,self.price)
    # python = Course('python','6 months',19800)
    # linux = Course('linux','5 months',17800)
    # Course.course_lst = [python,linux]
    # for course in Course.course_lst:
    #     print(course)  
    # 打印一个对象总是打印内存地址,这个数据对我们来说没有用
    # 打印这个对象的时候查看这个对象的相关信息
  • __new__

    对象在实例化的过程种,程序首先会创建一块内存地址,然后再调用__init__,我们在实例化的时候从来没有关心过开辟内存空间的事,因为有人帮我干了,这个帮我们开辟内存空间的就是__new__方法

    没有对象没有关系,我们自己可以new一个

    1. 测试例子
    class A:
        def __new__(cls,*args,**kwargs):
            print('执行我了')    
        def __init__(self):
            print('init')
            self.name = 'alex'
    A()
    
    # 结果
    # 执行我了
    # 默认来说,__new__方法是替我们开辟内存空间,但是我们这里将__new__执行的改为了打印,
    # __init__没有内存空间,也就不会执行了
    
    # new是没有self参数

    # 算法导论 - 微观

    # 23个设计模式 - 宏观

猜你喜欢

转载自www.cnblogs.com/Hybb/p/11518958.html