Django http方法中 request参数与 self.request 属性

Django http方法中 request参数与 self.request 属性

背景:

Django http方法中 request参数与 self.request 属性

Debug:

  发现在request参数的内存地址与 self.request属性地址是一样

猜想:

  request 是个可变对象

查询资料及请教同事:

不可变(immutable)对象类型
    int
    float
    decimal
    complex
    bool
    str
    tuple
    range
    frozenset
    bytes
可变(mutable)对象类型
    list
    dict
    set
    bytearray
    user-defined classes (unless specifically made immutable)

结论:

  用户自定义类的实例 在没有特殊处理为不可变对象时 都为可变对象

 探索:

  用户自定义的类怎么写才能让实例变为不可变对象?

  重写类的 setattr方法
  def __setattr__(self, key, value):
    raise AttributeError('不可变类')