类属性

史上最全的Python面向对象知识点疏理

亡梦爱人 提交于 2019-12-07 15:19:08
面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写。 实例变量:定义在方法中的变量,只作用于当前实例的类。 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。 创建类 a 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 P 访问。 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法 self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。 self代表类的实例,而非类 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。 输入: 输出: 从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.class

django 数据库操作详解

删除回忆录丶 提交于 2019-12-06 13:51:19
Django配置使用mysql数据库 修改 settings.py 中的 DATABASES 注意 : django框架不会自动帮我们生成mysql数据库,所以我们需要自己去创建。 DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'ENGINE': 'django.db.backends.mysql', 'NAME' : 'test2', 'USER' : 'root', 'PASSWORD' : '123456', 'HOST' : 'localhost', 'PORT' : 3306 } } settings.py python3 需要安装 pymysql : python3中安装好pymysql,需要在test2/__init__.py中加如下内容: import pymysql pymysql.install_as_MySQLdb() 启动服务的时候如出现错误 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.参照 https://www

python 面向对象

♀尐吖头ヾ 提交于 2019-12-05 19:07:17
1 面向对象 1.1 类的构造方法 __init__构造方法 调用时间:在对象被实例化时被程序自动调用 作用:用于对象创建时初始化 书写格式:init前后分别是2个下划线 程序不显示定义init方法,则程序默认调用一个无参数的init方法 对象创建过程(无参) 设置对象属性(有参) 创建对象过程(有参) 1.2 类的方法权限 修改对象属性的方法 方法1:对象变量名.属性 = 新值 问题: 可能修改的属性值不合法 在类的外部可以随意修改类的内部属性 方法2:对象变量名.内部修改属性方法 私有属性 定义:__私有变量名 只能在类内部使用,类外部不能访问,否则报错 私有方法 只能在类内部调用,在类的外部无法调用 定义私有方法在方法名前添加2个下划线:__私有方法() 类内部调用私有方法要使用self.私有方法的方式调用 #私有方法的定义&&使用 class Comrade: # 私有方法 def __send_message(self): print("消息已经向上级汇报") def answer_secret(self, secret): if secret == "芝麻开门": print("接头成功!") self.__send_message() # 调用私有方法 else: print("接头失败!") comrade = Comrade() comrade.answer

day52 Django-ORM多表增删改查

谁说我不能喝 提交于 2019-12-05 14:51:10
day52 Django-ORM多表增删改查 创建关系字段 class Author(models.Model): name=models.CharField(max_length=32) age=models.IntegerField() ad=models.OneToOneField(to="AuthorDetail",to_field="id",on_delete=models.CASCADE) # to_field="id" 可以不写,默认找主键 # to="AuthorDetail", to=可以不用写 # models.SET_NULL 置空 # on_delete=models.CASCADE 默认是级联删除,想做级联更新,直接去数据库修改表结构 class AuthorDetail(models.Model): birthday=models.DateField() telephone=models.CharField(max_length=16) addr=models.CharField(max_length=64) class Publish(models.Model): name=models.CharField(max_length=32) city=models.CharField(max_length=32) class Book(models

业务领域建模Domain Modeling

∥☆過路亽.° 提交于 2019-12-05 11:29:18
业务领域建模Domain Modeling 业务分析 工程实践的需求是搭建一个视频数据集网站,满足一些基本的视频数据上传与处理服务。用户可以将需要处理的视频发布到网站的个人账号,设置视频访问权限,根据个人需求获取网站处理好的视频并下载到本地。 系统的用户有网站的注册用户与网站的管理者,普通注册用户可以上传下载视频,网站管理者可以审核修改注册用户的当前状态、删除违规视频或禁止违规用户上传下载视频等操作。 管理员可以向所有用户发布公告,让用户遵守视频的发布规则,用户可以查看删除收到的消息。 系统需要的类有:用户类、管理员类、视频类、消息类 用户有以下操作: 注册 登录 注销 上传视频 下载视频 删除视频 管理员有以下操作: 登录 注销 查封用户 解禁用户 删除视频 发布公告 视频类所需方法: 分帧处理 数据标注 用户类属性: userId 姓名 密码 账号状态 管理员类属性: userId 姓名 密码 视频类属性: cvId userId URL 权限 文件名 发布日期 消息类属性: msgId userId 内容 发布日期 UML类图 关系数据库模型 来源: https://www.cnblogs.com/ustca/p/11922534.html

Werkzeug之Local源码解析

孤者浪人 提交于 2019-12-05 08:45:35
Werkzeug之Local源码解析 原博客地址 http://liuyajing.coding.me/blogs/python/2018/werkzeug-local/ 一、引入 最近在阅读 Flask 的源码,遇到三个概念:Local 、 LocalStack 和 LocalProxy ,本文主要就针对 Local 概念及其源码进行原理剖析。 二、Local Local 是一个类,源码位置:site-packages/werkzeug/local.py 在模块的开头,有以下代码: # 由于每个线程都有自己的greenlet,我们可以将它们用作上下文的标识符。 # 如果greenlet不可用,我们将根据它的位置回退到当前的线程标识。 try: from greenlet import getcurrent as get_ident except ImportError: try: from thread import get_ident except ImportError: from _thread import get_ident 1. 定义 class Local(object): # 定义此类允许绑定的属性名称 tuple __slots__ = ('__storage__', '__ident_func__') 2. init def __init__(self):

【Day2】3.面向对象编程

蹲街弑〆低调 提交于 2019-12-04 22:10:53
课程目标 1. 面向对象编程 2. 类和实例 3. 访问限制 4. 实例属性和类属性 面向对象编程 • 面向对象编程是一种程序设计思想 • 面向对象把 类 和 对象 作为程序的基本单元 • 对象包含 属性 和 方法 • 面向过程编程为:函数的调用集合 • 面向对象编程为:对象之间传递信息的集合 • 处处皆对象 类和实例 • 类可以理解为图纸或者模版 • 实例是根据类的图纸或者模版创建出来的一个一个对象 • 类定义 class ,关键字 self • 类的初始化函数 __init__ • 面向对象三大特点: 继承,封装,多态 • 属性和方法 访问限制 • 通过”__”两个下划线可以修饰私有变量 • 通过编写get和set方法来修改对象的属性 • Python中没有真正的私有属性和私有方法 实例属性和实例方法 • 实例属性 class Student(object): def __init__(self, name): self.name = name s = Student('Bob') s. score = 90 • 类属性 class Student(object): name = 'Student' print( Student.name ) 小结 • 面向过程和面向对象编程 • 类由属性和方法组成 • 对象是类的实例化 • 属性可以封装,并声明私有属性 • 类属性和实例属性

类的property特性

蓝咒 提交于 2019-12-04 08:16:35
类的property特性 一、什么是 property特性 property装饰器用于将被装饰的方法伪装成一个数据属性,在使用时可以不用加括号而直接使用 # ############### 定义 ############### class Foo: def func(self): pass # 定义property属性 @property def prop(self): pass # ############### 调用 ############### foo_obj = Foo() foo_obj.func() # 调用实例方法 foo_obj.prop # 调用property属性 如下的例子用于说明如何定一个简单的property属性: class Goods(object): @property def size(self): return 100 g = Goods() print(g.size) 100 property属性的定义和调用要注意一下几点: 1.定义时,在实例方法的基础上添加 @property 装饰器;并且仅有一个self参数 2.调用时,无需括号 二、简单示例 对于京东商城中显示电脑主机的列表页面,每次请求不可能把数据库中的所有内容都显示到页面上,而是通过分页的功能局部显示,所以在向数据库中请求数据时就要显示的指定获取从第m条到第n条的所有数据

Python学习:类属性的操作

江枫思渺然 提交于 2019-12-04 00:08:07
一、类的属性 类属性又称为静态属性。这些数据是与他们所属的类对象绑定的,不依赖于任何类实例。 类有两种属性:数据属性和函数属性 类的数据属性是所有对象共享的 类的函数属性是绑定给对象用的 class Chinese : country = 'China' def __init__ ( self , name ) : self . name = name def play_ball ( self , ball ) : print ( '%s is playing %s' % ( self , name , ball ) ) def say_language ( self , word ) : print ( '%s 说 %s' % ( self . name , word ) ) #查看类属性 print ( Chinese . country ) #修改类属性 Chinese . country = 'CHINA' print ( Chinese . country ) #删除类属性 del Chinese . country #增加类数据属性 Chinese . country = 'China' Chinese . location = 'Asia' print ( Chinese . __dict__ ) #增加类函数属性 Chinese . say_language =

描述符

前提是你 提交于 2019-12-03 21:33:28
一、简单理解一下描述符 python定义了把实现了__get__()、__set__()和__delete__()中的其中任意一种方法的类称之为描述符,描述符的本质是新式类,并且被代理的类(即应用描述符的类也是新式类)。描述符的作用是用来代理一个类的属性,需要注意的是描述符不能定义在类的构造函数中,只能定义为类的属性,它只属于类的,不属于实例,我们通过查看实例和类的字典即可知晓。 描述符是可以实现大部分Python类特性中最底层的数据结构的实现手段,我们常使用的@classmethod、@staticmethd、@property、甚至是__slots__等属性都是通过描述符来实现的。它是很多高级库和框架的重要工具之一,是使用到装饰器或者元类的大型框架中的一个非常重要组件。在一般的开发中我们可能用不到描述符,但是我们如果想要开发一个大型的框架或者大型的系统,那使用描述符会起到如虎添翼的作用。它的加盟将会使得系统更加完美。下面将简单的介绍描述符的使用。 class Descriptors: """ 数据描述符 """ def __init__(self, key, expected_type): """ key: 用户传进的值 expected_type:用户传进的值的类型 """ self.key = key self.expected_type = expected_type "