• Python


    class Foo(object):
    
        def __init__(self):
            # 1. 用父类object的__setattr__写没有问题,因为是调用object里的__setattr__,所以Foo里的__setattr__不会执行,也就没有递归了
            # 2. 这样以后,Foo()对象也有storage变量了,是一个{}。
            object.__setattr__(self, 'storage', {})
            # 3. 如果这样写会无限递归,看到对象.xx就会调用__setattr__,而这里的__setattr__里面也有对象.xx,就一直调用__setattr__
            # self.storage = {}    
    
        def __setattr__(self, key, value):
            self.storage = {'k1':'v1'}
            print(key,value)
            #self.__dict__[key] = value
    
        def __getattr__(self, item):
            print(item)
            return 'df'
            
        def __delattr__(self, item):
            # self.__dict__.pop(item)
    
    obj = Foo()
    
    # obj.x = 123             由__setattr__ magic function实现
    # 对象.xx                   由__getattr__ magic function实现
    
    
    
  • 相关阅读:
    Win32++ Home Page
    CEGUI Home Page
    迁移DirectX11到VS2015 Win10
    Oracle常用查看表结构命令
    PLSQL常用配置
    PLSQL DEVELOPER
    WeblogicException
    java.nio.Buffer
    spring batch
    vi
  • 原文地址:https://www.cnblogs.com/allen2333/p/9019660.html
Copyright © 2020-2023  润新知