Python之路,Day20 = 序列类型,绑定方法,类方法,静态方法,封装继承和多态 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list.tuple.range 专门处理文本的附加序列类型(Text Sequence Types):str 专门处理二进制数据的附加序列类型(Binary Sequence Types): bytes.bytearray.mem…
Python进阶----类的结构(公有成员 , 私有成员(私有属性,私有方法),类方法,静态方法,属性) ,isinstance 和issubcalss ,元类(type()) 一丶类的结构细分     成员:       公有属性(静态属性,对象属性),私有属性(私有静态属性,私有对象属性),私有方法,公有方法,类方法,静态方法,属性.代码如下:…
Hello大家好,我是python学习者小杨同学,上次跟大家分享关于python的数值类型和序列类型,本次就承接上一节的内容,说一说序列类型的方法. 序列类型的方法,简单的来说就是四个字:增删改查.随着我们学习的深入,我们将会一直围绕着四个字来进行程序的编写及实现,接下来我们就一起学习吧! 列表的方法 首先登场的选手是python的列表,列表属于可变类型,所以它将有完整的增删改查方法,让我们一起来看看具体是什么. 增 增,故名思意就是可以对列表进行新增元素的操作,python的列表提供了三种新增…
python基础之序列类型的方法--字符串方法 Hello大家好,我是python学习者小杨同学,经过一段时间的沉淀(其实是偷懒不想更新),我终于想起了自己的博客账号,所以这次带来的是序列方法的后半部分:字符串的方法. 接上述的列表和元组的方法,我们这次来讲讲字符串的方法,现在我们一起开始学习吧. 注:字符串是不可变类型,改.删的操作将会改变原有字符串,说人话就是改了以后它就不是原来的那个它了(滑稽). 查 index()方法 与列表相同,index查询指定元素的下标值,如果没有该元素,则抛出错…
多态 1.什么是多态? 多态指的是同一种类型的事物,不同的形态. 2.多态的目的: “多态” 也称之为 “多态性”,目的是为了 在不知道对象具体类型的情况下,统一对象调用方法的规范(比如:名字). 多态的表现 “形式之一” 就是继承: - 先抽象,再继承 父类: 定制一套统一的规范.(比如: 方法名统一) 子类: 遵循父类的统一的规范.(比如: 子类遵循父类方法名的统一) 注意: 在python中不会强制限制 子类 必须要遵循 父类 的规范,所以出现了抽象类. # 动物类 class Anima…
列表的方法: li = [] 添加: li.append( 'a' ) 追加元素进入列表 li.insert( 1, 'b' ) 插入元素到指定索引位置 ----->>>  li.insert( 索引, 元素 ) li.extend( 'fgh' ) 把参数的所有元素追加到列表,参数为序列类型,可以是列表和元祖 删除: li.clear()          清空列表 li.pop() 删除最后一个并返回该值,  li.pop( 索引 ) 默认最后一个,  li.remove( 'f''…
在Python输入dir(str).dir(list).dir(tuple)可查看各种序列类型的所有方法. 对于某个方法不懂怎么使用的情况,可以直接help(str.split)对某个方法进行查询. 1.列表的常用方法 L.append(obj) 在列表末尾添加新的对象.L.clear() 清空整个列表.L.copy() 复制列表.L.count(obj) 统计某个元素在列表中出现的次数.L.extend(obj) 用obj扩展原来的列表. L.index(obj) 从列表中找某个值第一个匹配项…
封装 该露的露,该藏的藏 我们常需设计要追求,"高内聚,低耦合".高内聚就是类的内部数据操作细节自己完成.不允许外部干涉:低耦合:仅暴漏少量的方法给外部使用. 封装(数据的隐藏) 通常,应禁止访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏. 记住这句话就够了:属性私有,get/set package com.baidu.oop.demo04; //类 public class Student { //私有属性 private String name; //名字 p…
面向对象的三大特性 封装 继承 多态 1.封装: 隐藏属性,方法或实现细节的过程称为封装 信息隐藏,隐藏对象的实现细节,不允许用户看到 将东西包装在一 然后以新的完整形式呈现出来 例如,两种或多种化学药品组成一个胶囊 将方法和属性一起包装到一个单元中,单元以类的形式实现 对象同时具有属性和方法两项特性 对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相成,不能分割 2继承: 2.1继承的定义: A是B 如果这句话能说得通,在设计程序的时候就可以看成是继承关系 子类具有父类的一般特性…
######装饰器######装饰器的概念 - 装饰器的实现是函数里面嵌套函数;- 装饰器的本质是一个函数, 它可以让其他函数在不需要做任何代码改动的前提下增加额外的功能;- 装饰器需要传递一个函数, 返回值也是一个函数对象.######面向对象#######一.面向对象的基本概念 面向过程和面向对象,是两种不同的编程方式 对比面向过程的特点,可以更好的了解什么是面向对象  过程和函数(都是对一段功能的代码进行封装) 过程:是早期的一个编程概念  过程类似于函数,只能执行,但是没有返回值 函数:…
C++中非常重要的概念,尤其是相对于C语言而言,也是其具有如此高的工程使用性的重要原因. 封装 所谓封装是将某些东西隐藏起来,让外界无法直接使用,而必须通过某些特定的方式才能访问.也即是,将抽象得到的数据和行为(类似于属性和方法)结合构成一个有机整体,将数据与操作数据的函数构成类,其中数据和函数都是类的成员. 其目的是将对象的使用者和设计者隔离开来,提高软件的可维护性和可修改性,使用者不必了解具体的实现细节而只是通过外部接口及特定的访问权限使用类成员,从而增强了安全性且简化了编程,也使得不同类之…
封装 定义:属性私有private:get/set 目的 提高程序的安全性,保护数据 隐藏代码的实现细节 统一接口 提高系统的可维护性 代码 public class Student { //名字 private String name; //学号 private int id; //性别 private char sex; //年龄 private int age; //要提供一些可以操作这些属性的方法 //get 获得这个数据 public String getName(){ return…
目录 类的封装 类的property特性 类与对象的绑定方法与非绑定方法 类的封装 封装: 就是打包,封起来,装起来,把你丢进袋子里,然后用绳子把袋子绑紧,你还能拿到袋子里的那个人吗? 1.隐藏属性和方法,外部(类的外部)无法使用,内部(类额内部)可以使用,在类定义阶段就执行了,真的想引用,就使用_类名__属性名 封装分为两个层面: 第一个层面: 对象能拿到类的东西,但是类能拿到对象的东西吗? class Foo(): count = 0 print(count) f = Foo() print…
开始 # -*-coding:utf-8-*- # 普通方法,类方法,静态方法的区别 __metaclass__ = type class Tst: name = 'tst' data = 'this is data' # 普通方法 def normalMethod(self, name): print self.data, name # 类方法,可以访问类属性 @classmethod def classMethod(cls, name): print cls.data, name # 静态方…
目录 类的封装 两个层面的封装 第一个层面 第二个层面 封装的好处 私有模块 类的propertry特性 setter 和 deleter 类与对象的绑定方法与非绑定方法 类的封装 将类的属性或方法隐藏,这些属性和方法只能在内部使用,外部无法使用.类的封装在类定义阶段就执行了,会把私有属性_x变成_类名__x 两个层面的封装 第一个层面 第一个层面的封装(什么都不用做):创建类和对象会分别创建二者的名称空间,我们只能用类名.或者obj.的方法去访问里面的名字,这本身就是一种封装 第二个层面 第二…
小叙一会儿: 通常情况下,在类中定义的所有函数(注意了,这里说的就是所有,跟self啥的没关系,self也只是一个再普通不过 的参数而已)都是对象的绑定方法,对象在调用绑定方法时会自动将自己作为参数传递给方法的第一个参数.除此之外还 有两种常见的方法:静态方法和类方法,二者是为类量身定制的,但是实例非要使用,也不会报错,后续将介绍. 一.类方法: 定义:在类里面把一个方法绑定给类,说白了类方法是给类用的,该方法由装饰器@classmethod所装饰,类.绑定 到类的方法(),会把类本身当做第一个…
前言 我们经常会遇到这样的事情:有时候我们找到了一个库,但是这个库是用 TypeScript 写的,但是我们想在 C# 调用,于是我们需要设法将原来的 TypeScript 类型声明翻译成 C# 的代码,然后如果是 UI 组件的话,我们需要将其封装到一个 WebView 里面,然后通过 JavaScript 和 C# 的互操作功能来调用该组件的各种方法,支持该组件的各种事件等等. 但是这是一个苦力活,尤其是类型翻译这一步. 这个是我最近在帮助维护一个开源 UWP 项目 monaco-editor…
目录 一:绑定方法 1.绑定给对象的方法 2.绑定给类的方法 3.非绑定方法之静态方法 二,隐藏属性 1.如何隐藏属性 三,property 装饰器 一:绑定方法 1.绑定给对象的方法 class Person: # 绑定给对象的方法 对象调用 自动把对象传入 def print_name(self): print(self.name) print('对象的绑定方法') p = Person() p.name = 'lqz' # 对象来调用对象的绑定方法 自动将对象传入 p.print_name…
一.对象的特有名称空间 __init__方法会在实例化对象时被调用 1.会为实例化的对象形成空的名称空间 2.就是一个方法,可以被传参,在类名(实参)这种方式下调用并传参 __init__(self 形参) 3.第一个self就是要产生的当前对象 重点:在方法内部,形参拿到了实参值,利用self.属性名 = 形参 = 实参值, 对对象的名称空间添加属性 class Student: # def __init__(self, name, sex): # print('2>>>', self…
>>> class foo(): clssvar=[1,2] def __init__(self): self.instance=[1,2,3] def hehe(self): print 'haha' >>> foo.hehe <unbound method foo.hehe> >>> a=foo() >>> a.hehe <bound method foo.hehe of <__main__.foo ins…
一.抽象类 抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 1.在python中实现抽象类 import abc #利用abc模块实现抽象类 class All_file(metaclass=abc.ABCMeta): all_type='file' @abc.abstractmethod #定义抽象方法,无需实现功能 def read(self): '子类必须定义读功能' pass @abc.abstractmethod #定义抽象方法,无需实现功能 def write(sel…
一.面向对象绑定方法 一.类中定义的函数分成两大类 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 自动将类当作第一个参数传入(其实对象也可调用,但仍将类当作第一个参数传入) 2. 绑定到对象的方法:没有被任何装饰器装饰的方法. 为对象量身定制 自动将对象当作第一个参数传入(属于类的函数,类可以调用,但是必须按照函数的规则来,没有自动传值那么一说) 2:非绑定方法: 用staticmethod装…
属性 如果你已经了解Python类中的方法,那么属性就非常简单了,因为Python中的属性其实是普通方法的变种. 哎,其实就是这样,我们看一下当我们想查看税后工资的时候,这其实是一个人的属性,但是它却要经过一些特殊的处理或者计算,让我们必须写在一个方法里,这个时候我们使用@property这个修饰符,就可以像使用字段一样调用这个方法了.对,属性是处女座就是这么矫情!!!当然如果你和我一样是神经大条的射手座,完全不用care这个属性什么鬼的. 尽管如此,在这里还是要说一说要注意一下几点: 1.定义…
[封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 1. 将变化隔离: 2. 便于使用: 3. 提高复用性: 4. 提高安全性: [封装原则] 1. 将不需要对外提供的内容都隐藏起来: 2. 把属性都隐藏,提供公共方法对其访问. 私有变量和私有方法 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) 私有变量 #其实这仅仅这是一种变形操作 #类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式: class A: __N=0 #类的数据属性就应…
property 特性 什么是特性property property 是一种特殊的属性,访问它时会执行一段功能(函数),然后返回值 例如 BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解) 成人的BMI数值: 过轻:低于18. 正常:18.5-23.9 过重:- 肥胖:- 非常肥胖, 高于32 体质指数(BMI)=体重(kg)÷身高^(m) EX:70kg÷(1.75×1.75)=22.86 ''' class People: def _…
1.封装 (1)什么是封装? 封:属性对外是隐藏的,但对内是开放的: 装:申请一个名称空间,往里面装入一系列名字/属性 (2)为什么要封装? 封装数据属性的目的 首先定义属性的目的就是为了给类外部的使用者使用的 隐藏之后是为了不让外部使用直接使用,需要类内部开辟一个接口 然后让类外部的使用通过接口来间接的操作隐蔽的属性 精髓在于:我们可以在接口之上附加任意逻辑,从而严格严格控制使用者对属性的操作: 封装函数属性 首先定义属性的目的就是为了给类外部的使用使用的 隐藏函数属性是为了让使用者不直接使用…
一.封装 ''' 1.什么封装 封:属性对外是隐藏的,但对内是开放的(对内是开放的是因为在类定义阶段这种隐藏已经发生改变) 装:申请一个名称空间,往里装入一系列名字/属性 2.为什么要封装 封装数据属性的目的 首先定义属性的目的就是为了给类外部的使用使用的, 隐藏之后是为了不让外部使用直接使用,需要类内部开辟一个接口(就是定义一个接口的函数,然后利用隐藏的原理对其进行封装,这样外部就可以间接使用被隐藏的属性) 然后让类外部的使用通过接口来间接地操作隐藏的属性. 精髓在于:我们可以在接口之上附加任…
封装 1.什么是封装: 封:属性对外隐藏,但对内开放 装:申请一个名称空间,往里装入一系列名字/属性 2.为什么要封装: 封装数据属性:不让外部使用者直接使用数据,需要类内部开辟一个接口,让外部通过接口使用数据,好处在于可以在接口中定义各种规则 封装函数属性:定义函数就是为了给类外部使用者的,隐藏函数属性是为了不让外部直接使用,需内部接口,然后接口去调用隐藏的功能 封装的精髓是隔离复杂度 3.如何封装(隐藏):在属性前加上__开头 ①这种隐藏只是语法上的变形操作,类中__n其实是_类名__n ②…
QJSON封装好的序列和还原方法 {*******************************************************}{ }{ QJSON与数据集互转 }{ }{ 版权所有 (C) 2014 碧水航工作室 }{ 作者:恢弘 QQ11241450 }{ QJSON版权属于 QDAC,QQ群为:250530692 }{ }{ V1.0.1 - 2014.07.01 }{***************************************************…
上节课复习:1.编程思想    面向过程        核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么后干什么        基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式        优点:复杂的问题流程化,进而简单化        缺点:可扩展性差 面向对象        核心是对象二字,对象是特征(变量)与技能(函数)的结合体        基于该思想编写程序就好比在创造一个世界,世界是由一个个对象组成的,在上帝眼里所有存在的事物都是对象,任何不存在的事物…