目录
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)
标签:__,obj,对象,self,Request,xx,print
From: https://www.cnblogs.com/khalil12138/p/18293885