Request物件

khalil12138發表於2024-07-10

目錄
  • Django Request和引數
    • 1. 屬性
      • 1.1 先學習下物件導向知識點

Django Request和引數

1. 屬性

1.1 先學習下物件導向知識點

獲取物件中的成員時,本質上會呼叫 __getattribute__方法,預設我們不定義就用父類中的


class Request(object):
    def __init__(self, req, xx):
        self._request = req
        self.xx = xx


obj = Request(1, 2)
print(obj.xx)
print(obj._request)


class Request(object):
    def __init__(self, req, xx):
        self._request = req
        self.xx = xx

    def __getattribute__(self, item):
        print("執行__getattribute__", item)
        return super().__getattribute__(item)


obj = Request(1, 2)
print(obj.xx)
print(obj._request)
# int(obj.v1) # 報錯
# 注意:如果不是物件中的成員,就會報錯。

不過想要訪問物件中不存在成員,則可以透過定義 __getattr__實現。

  • 先執行自己的 __getattribute__
  • 再執行父類的__getattribute__
  • 是自己物件,直接獲取並返回
  • 不是自己物件,呼叫__getattr__

class Request(object):
    def __init__(self, req, xx):
        self._request = req
        self.xx = xx

    def __getattribute__(self, item):
        print("執行__getattribute__", item)
        return super().__getattribute__(item)

    def __getattr__(self, item):
        print("__getattr__", item)
        return 999


obj = Request(1, 2)
print(obj.xx)
print(obj._request)
print(obj.v1)

相關文章