python模型的属性是什么_Python的自定义属性访问跟描述器以及ORM模型的简单介绍...
一 、 自定义属性访问
1.__getattr__
作用:当我们访问属性的时候,如果属性不存在(出现AttrError),该方法会被触发。
2.__getattribute__
作用:访问属性的时候,第一时间触发该方法去找属性。如果没找到触发AttrError
总结:当我们去访问一个不存在的属性时,首先会触发__getattribute__,然后才会触发__getattr__
如果属性存在,就返回这个属性值,如果没有就报AttrError
3. __setattr__(self,key,value)
作用:这个属性在给对象设置属性的时候触发
例子:
def __setattr__(self,key,value):
if key == "age" :
super().__setattr__(key,18)
else:
print("设置属性的时候会触发")
super().__setattr__(key,value)
4. __delattr__(self,item):
print("删除的时候被触发")
super().__delattr__(item)
item : 被删除的类属性名
作用:如果我们不想一个属性被删除,就重写__delattr__方法,如果调用父类的方法就会被删除
二、描述器
描述器是一个具有"绑定行为"的对象属性,该对象的属性访问通过描述器协议覆盖:__get__()
__set__()和__delete__().如果一个对象定义这些方法中的任何一个,它被称为一个描述器。
1.object.__get__(self,instance,owner)
获取主类的属性或者该类的一个实例的属性。owner始终是属主,instance是属性访问的实例
当属性通过owner访问时则为None。这个方法该返回的属性值,或者引发一个AttributeError
异常
2.object.__set__(self,instance,value)
设置属主类的实例instance的属性为一个新值value
3.object.__delete__(self,instance)
删除属主类的实例insta的属性
例子:
class Filed(object):
def __get__(self,instance,owner)
print("访问属性的时候被触发")
return self.value
def object.__set__(self,instance,value)
print("set方法被触发")
self.value = value
def object.__delete__(self,instance)
print("删除属性的时候被触发")
self.value = None
class Model(object):
name = '熊猫'
attr = Filed() # 描述器对象:会覆盖类属性的相关操作
三、orm模型介绍
o objects:类和对象
R Relation:关系,关系数据库中的表格
M Mapping:映射
orm框架的功能
1.建立模型类和表之间的对应关系,允许我们通过面向对象的方式来操作数据库。
2.根据设计的模型类生成数据库中的表格
3.通过方便的配置就可以进行数据库的切换
例子:描述器在orm模型中的应用
# 通过描述器实现一个布尔类型的字段类型。
class Description(object):
def __get__(self, instance, owner):
return self.value
def __set__(self, instance, value):
if isinstance(value, bool):
self.value = value
else:
raise TypeError("需要一个bool类型的值")
def __delattr__(self, item):
self.value = None
class Data(object):
gender = Description()
d = Data()
d.gender = False
print(d.gender)
数据库的字段类型
mysql常用数据类型:
整数:int,bit
小数:deccimal (decimal表示浮点数,如decimal(5,2)表示共存五位数,小数占2位)
字符串:varchar,char (char不可变长度,varchar可变长度 )
日期时间:date,time,datetime
枚举类型:(enum)
python模型的属性是什么_Python的自定义属性访问跟描述器以及ORM模型的简单介绍...相关推荐
- python里的属性是什么_python属性 python 里的属性是什么意思?
python 里的属性是什么意思? 刚开始看python教程,不是很明白."属性,属性方法,方法"这些是什么意你说的是对象吧 Python是面向对象的语言,在python中一切皆对 ...
- python的类属性和方法_Python 类的属性和方法
本文介绍Python类中的属性和方法.和大部分语言类似,Python中的属性和方法也公有(public)和私有(private) 的区分. 一.类的公有和私有属性: 在Python中一般定义的属性为公 ...
- python模型的属性是什么_python – Django:为什么Django模型字段的类属性?
不,原因与此相同: >>> class Foo(object): ... bar = 'Foo attribute' ... >>> f = Foo() >& ...
- python的类属性和方法_Python中类属性、实例属性和实例方法的区别
你似乎对概念有相当好的理解.很难找到用通用方式解释的信息,尤其是像python这样一种广泛使用的语言.我基本上会附和你的正确假设,并在此过程中做一些小的调整.在 类属性是将从类共享创建的所有对象的特征 ...
- python的实例属性和静态属性表_Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法...
类属性可以直接在方法中赋值,但 一.调用该属性时,必须先调用该方法: 二.与 init 方法区别是,init方法只初始化一次,初始化完成后作为全局变量.在方法中赋值属性,每次调用该方法,该属性初始化一 ...
- python获取方法的装饰方法_python中的方法和装饰器
[TOC] 装饰器 python中的装饰器(decorator)是在pep 318中被首次引入,它的本质是一个函数这个函数是接受其它参数为参数,并且用一个新的,修改后的函数作为替换,最常见的装饰器就c ...
- python连接数据库并编写调用函数_Python使用pyodbc访问数据库操作方法详解
本文实例讲述了Python使用pyodbc访问数据库操作方法.分享给大家供大家参考,具体如下: 1.连接数据库 1)直接连接数据库和创建一个游标(cursor) cnxn =pyodbc.connec ...
- python显示小数点后几位数_Python编程从入门到实践-连载1(变量和简单数据类型)...
第二章 变量和简单数据类型 2.2.0 变量 我们添加了一个名为message的变量.每个变量都存储了一个值--与变量相关联的信息.在这里,存储的值为文本"Hello Python worl ...
- python密码登录程序三次_Python实现账号密码输错三次即锁定功能简单示例
本文实例讲述了Python实现账号密码输错三次即锁定功能.分享给大家供大家参考,具体如下: 初学Python-1 #实现账号输错三次即锁定 user = "hubery" pass ...
最新文章
- ( KMP 求循环节的个数)Power Strings -- poj -- 2406
- Redhate5.4下Oracle 11g安装
- 快速搭建 Serverless 在线图片处理应用
- android 介绍0
- [导入]对iis写权限的利用
- 改造消费方解决地址硬编码问题
- c 导入数据到oracle,excel中数据导入到Orcale数据库表中的方法 | 学步园
- leetcode剑指 Offer 53 - II. 0~n-1中缺失的数字(二分查找)
- 2018届校招面经精选
- Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。...
- 如何理解Spring中的IOC和AOP
- 计算机培训教学计划,计算机培训教学计划.doc
- android ip计算,子网掩码怎么算_ipv6子网掩码计算器_掩码计算器android
- 今天是愚人节。(Today is April Fools' Day.)网页需要倾斜o(∩_∩)o
- 如何下载视频号的视频
- Windows彩色桌面变成灰色,怎么办?
- python使用to_csv(mode=‘a‘)追加数据/(mode=‘w‘)覆盖文件数据
- 联想ThinkSystem服务器 安装ESXI 7.0 踩坑记录
- Win10将某个软件/文件添加到开始屏幕(磁贴)
- 开关稳压器详解(七)-Buck降压型开关稳压器RC Snubber设计
热门文章
- 20应用统计考研复试要点(part11)--应用多元分析
- java监控数据库的增量_【安德鲁斯】基于脚本的数据库quot;增量更新quot;,如果不改变,每次更新java代码、!...
- 0中断优先级_西门子S7-200 SMART中断及中断指令概述
- LeetCode53:最大子序和(分治思想,Python3实现)
- 看了豆瓣的差评以后,我不建议你买我的书了。
- 数据结构-常用的查找算法
- SAP Spartacus Sample Data Extension
- SAP Spartacus打印Occ endpoint请求的url
- SAP Spartacus的CMSPageGuard
- 本人使用abapgit遇到的一些错误