Werkzeug的Local系列(1) - 属性__setattr__和__getattr__

Python类有哪些属性

class Foo(object):
    c_foo_a = 'Foo'

    def __init__(self):
        self.i_foo_a = 'self.foo'
    
    def Foo_func(self):
        pass

print(dir(Foo))

输出结果:

['Foo_func', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', 
'__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', 
'__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', 
'__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', 
'__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 
'__weakref__', 'c_foo_a']

可以看到一些平时很少用到的内置方法

自定义属性访问

在Python3的自定义数据访问里提到几个重要的魔术方法:

  1. __getattr__
  2. __getattribute__
  3. __setattr__
  4. __delattr__
    按照Python的文档提到:

methods can be defined to customize the meaning of attribute access (use of, assignment to, or deletion of x.name) for class instances.

先不理解这些特性,后续开始了解属性代理的访问,通过上述的魔术方法可以实现特殊的用途。

你可能感兴趣的:(Werkzeug的Local系列(1) - 属性__setattr__和__getattr__)