目錄
- Django Request和引數
- 1. 屬性
- 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)