python面向对象的特殊方法补充

2025-11-02T02:27:00

python面向对象的特殊方法补充

特殊方法

  • 初始化方法

    • init
  • 创建前置方法,在init之前 (构造方法)

    • new
    class practise(object):
        def __init__(self,name):
                self.name = name
        def __new__(cls,*args,**kwagrs)
                print('正在创建新方法')
                return object.__new__(cls) 
  • call方法,对象执行(object())加括号,默认执行类下的__ call __ 方法

    class practise(object):
        def __init__(self,name):
                self.name = name
        def __call__s(self,*args,**kwagrs)
                print('正在执行call方法')
        
        
        >>> a = practise('alex')
        >>> a() #正在执行call方法
  • str方法 将对象字符串格式化(str(obj)),返回字符串(备注)

    class practise(object):
        def __init__(self,name):
                self.name = name
        def __str__(self):
            return '这是str方法'
    
    a = practise()
    b = str(a)
    print(b)
    
    print(a) #可直接print对象,显示类的备注
  • dict方法(展示全部变量从类或者对象)(以字典存在)

    class practise(object):
        def __init__(self,name,age):
                self.name = name
                self.age = age
  • setitem getitem delitem (仿dict方法)

    #info的方法
    class info(object):
        def __init__(self,name):
            self.name = name
    
        def __setitem__(self, key, value):
            print(f'{key}:{value}')
    
        def __getitem__(self,name):
            print(f'{name}')
    
        def __delitem__(self,name):
            print(f'del {name}')
    
    a = info('alex')
    a['213'] = 456
    a['123']
    del a['123']
  • enter,exit(类似装饰器)

    • with … as …必须拥有enter和exit
    • with … as … f 名称为上下文管理
    #模拟数据库连接
    class connectsql(object):
        def __enter__(self):
            self.sqlconect = link to sql
            return sqlconect
        def __exit__(self, type, value, traceback):
            self.sqlconnect.close()
    
    with connectsql() as f:
            f.操作()
        
    
    #with+类调用
    class longlongago(object):
        def __init__(self,name):
            self.name = name
        def show_name(self):
            print(self.name)
        def __enter__(self):
            return self
        def __exit__(self, type, value, traceback):
            print('结束')
    
    with longlongago('alex') as f:
        f.show_name()
  • add

    • 对象相加
    #对象相加
    class plusobj(object):
        def __init__(self,name):
            self.name = name
        def __add__(self,other):
            return self.name + other.name
    
    a = plusobj('aka')
    b = plusobj('cui')
    c = a + b
    print(c)
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »