zoukankan      html  css  js  c++  java
  • python 内置方法


    内置方法
    0.format
    format_dic= {'自由': '{obj.name}--{obj.where}--{obj.age}',
                   '古风': '{obj.name}/--{obj.age}/--{obj.where}',
                   '2b': '{obj.name}+++++{obj.where}+++{obj.age}'}
    class A:
        def __init__(self,name,age,where):
            self.name =name
            self.age = age
            self.where = where
    
        def __format__(self,format_spec):
            if  not format_spec or format_spec not in format_dic:
                return format_dic['自由'].format(obj=self)
            else:
                return format_dic[format_spec].format(obj=self)
    
    a = A('alex',23,'沙河')
    
    
    print(a.__format__('古风'))
    print(format(a,'2b'))
        format 只有当类中投这个内置方法才能使用,并且使用的过程中需要传入format_spec的参数,
        具体做用鬼知道!!!!!!!!!!!!!!!
    

    1.__str__
    __str__,在类中设置的方法,在遇到对该类的对象直接print的情况下后直接寻找类中的__str__,并且寻找__str__的返回值,如果没有则会返回
    object中的__str__返回值,空间地址
    
    
    class A:
        def __init__(self,name):
            self.name = name
        # def __str__(self):
        #     return '23333'
    
    
    a = A('alex')
    print(a)#<__main__.A object at 0x0000000000DBAD68>  object中的__str__返回值
    
    一般的使用范围是在设置一个大类的时候,自定义一个方法的返回值
    

    2.__repr__

    __repe__于__str__类似,同样是自定义返回值,并且是他的备胎!
        1.在调取__str__的时候优先在方法中寻找__str__数值,找不到则会寻找__repr__
        2.调取__repr__的时候,相当于执行obj.__repr__,寻找__repr__找不到则寻找object中的__repr__方法
    
    class int:
        # def __str__(self):
        #     return '2'
        def __repr__(self):
            return str(1)
    a = int()
    b = int()
    print(repr(a))
    print(str(a))
    print(repr(b))
    

    3.__call__
    __call__是对象名能够如同函数一样被调用,
    class A:
        def __init__(self):pass
    
        def __call__(self):
            print('233')
    a = A()
    a()
    

    4.__new__
    __new__ 构造方法:在实例化之前自定义一个实例化的途径
    class A:
        __Nock = None
        def __new__(cls, *args, **kwargs):
            if cls.__Nock is None:
                obj = object.__new__(cls)
                cls.__Nock = obj
            return cls.__Nock
    
        def __init__(self,name):
            self.name = name
    
    a = A('alex')
    b = A('engo')
    print(a)
    print(b)
    #单例模式,使用的是同一个内存空间,最终调取的属性是最后一个对象的属性
    print(a.name)#结果engo
    print(b.name)#结果engo
    

    5.__eq__
    __eq__方法:对判断的结果自定义,可以定义比较的方式
    class A:
        pass
        # def __eq__(self, other):
        #     return True
    object
    
    a = A()
    b = A()
    print(a == b)   #应为是对象,所以是对象地址与对象地址的不交,不是类的比较
    print(A())
    func = 2
    func2 = 2
    print(func == func2)
    is 比较的地址
    == 比较的是数值
    在类中 == 比较的是地址
    

    6.__del__

    __del__方法:兜底方法,python自动清除之前会执行一次__del__方法
    应用范围,需要用到操作系统的地方,空间删除后用过的操作系统的部分方法没有关闭的情况下用__del__方法关闭。
    
    class A:
        def __init__(self):
            self.f = open('wen','w')
        def __del__(self):
            self.f.close()
            print('233333')
    
    
    a = A()
    

    7.item
    1.getitem
    2.setitem
    3.delitem
    8.item  三种方法:
            getitem 查找
                将对象的属性读取方式改变
            setitem 修改增加
                将对象的属性修改和增加
            delitem 删除
                将对象的属性删除
    class A:
        def __init__(self,name):
            self.name = name
    
        def __getitem__(self,key):    #转换一种读取方式
            return self.__dict__[key]
    
        def __setitem__(self, key, value):  #对属性进行修改和增加
            self.__dict__[key] = value
    
        def __delitem__(self, key): #删除属性
            del self.__dict__[key]
    
    a = A('alex')
    print(a['name'])
    a['name'] = 'nihao'
    print(a['name'])
    del a['name']
    print(a['name'])
    
  • 相关阅读:
    10.19JDBC之DBCP连接池的使用
    计时器Timer介绍
    Silverlight3.0 起步(一)——环境
    javascript 类
    RhinoMock入门(6)——安装结果和约束
    RhinoMock入门(4)——次序和委托
    javascript 表达式、括号、常用函数和jquery库怎么样实现的分析
    CSP加密服务(一)
    RhinoMock入门(5)——属性,方法和方法选项
    RhinoMock入门(7)——Do,With和Recordplayback
  • 原文地址:https://www.cnblogs.com/wpcbk/p/8886056.html
Copyright © 2011-2022 走看看