一:string相关:__str__(),__repr__(),__format__() str方法更面向人类阅读,print()使用的就是str repr方法更面对python,目标是希望生成一个放入eval方法就能够执行的python语句字符串 注意,不要一看到format方法就认为他是用来取代%赋值的 *在里format方法可通过后面的!r与!s来指定使用repr还是str,即此时就不是用的format方法了,而是调用的repr或者str format有两种参数形式: 1:"",…
一:callables callables使类实例能够像函数一样被调用 如果类需要一个函数型接口这时用callable,最好继承自abc.Callable,这样有些检查机制并且一看就知道此类的目的是callable对象如果类需要有‘记忆’功能,使用callable是非常方便的相对于函数而言,callable语法什么的就要复杂多了,这也是其主要的缺点: def x(args): body 转化为callable对象: class X(collections.abc.callable): def _…
面对对象编程估计我们最早接触到的就是__init__了,也就是实例的初始化处理过程: 1:来看看最基础的__init__ class Card(object): #抽象类Card,并不用于实例化 def __init__( self, rank, suit ): self.suit= suit self.rank= rank self.hard, self.soft = self._points() print("try") class NumberCard( Card ): def…
抽象基本类的几大特点: 1:要定义但是并不完整的实现所有方法 2:基本的意思是作为父类 3:父类需要明确表示出那些方法的特征,这样在写子类时更加简单明白 用抽象基本类的地方: 1:用作父类 2:用作检验实例类型 3:用作抛出异常说明 关于抽象基本类的几点说明:1:LSP(里式替换原则): 子类必须能够替换他们的基类型,替换后软件运行形态不变,觉察不出基类和子类的区别. 这样来检验该设计是否合理或者藏有缺陷.(从抽象类继承而不是具体类) 2:关于isinstance的使用: 首先:大量的isins…
1.property 用途:用来将对像的某个方法伪装成属性来提高代码的统一性. class Goods: #商品类 discount = 0.8 #商品折扣 def __init__(self,name,price): self.name = name self.price = price def discountprice(self): #定义goodsprice方法,返回折扣后价格 return self.price*self.discountipad = Goods('ipad',2299…
一:最基本的属性操作 class Generic: pass g= Generic() >>> g.attribute= "value" #创建属性并赋值 >>> g.attribute 'value' >>> g.unset Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeEr…
昨天读完了<Mastering Object-oriented Python>的第一部分,做一些总结. 首先,第一部分总过八章,名字叫Pythonic Classes via Special Methods,也就是讲如何通过特殊方法构造以及设计类的. 其次,第一部分通篇使用的类的例子是BlackJack,也就是21点纸牌游戏,本篇先跳出来实现下21点游戏的代码,这里看明白了免得后面只使用部分时产生不清楚.[21点玩法] 以下代码我写了两个版本,版本一是原本自己按最普通的写法写的,版本二是用了部…
什么是抽象方法?我们在类里面定义的没有方法体的方法就是抽象方法.所谓的没有方法体指的是,在方法声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时还要加一个关键字“abstract”来修饰. 我在好奇,抽象类可以拿来做什么?其实可以当做一个全局变量  不能实例化,只能继承重写,而且是必须重写 PHP抽象类应用要点: 1.定义一些方法,子类必须完全实现这个抽象中所有的方法 2.不能从抽象类创建对象,它的意义在于被扩展 3.抽象类通常具有抽象方法,方法中没…
写一个集合类的三种方法:wrap,extend,invent 一:包装一个集合类 class Deck: def __init__( self ): self._cards = [card6(r+1,s) for r in range(13) for s in (Club,Diamond, Heart, Spade)] #这就是受包装的list型数据,添加方法对其进行操作 random.shuffle( self._cards ) def pop( self ): return self._ca…
1.对象魔法 在面对对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法. 使用对象而非全局变量以及函数的原因有多个,而最重要的好处不过以下几点: 多态:可对不同类型的对象执行相同的操作,而这些操作全部能够正常运行. 封装:对外部隐藏有关对象工作的具体细节. 继承:可基于通用类创建专用类. 1.1多态 术语多态源于希腊语,意思是有多种形态,这大致意味着即使你不知道变量指向的是哪个对象,也能够对其执行操作,且操作的行为随着对象所属的类型(类)而异. 1.2多态和方法 >…
小学生绞尽脑汁也学不会的python(面对对象-----类与类之间的关系 1. 依赖关系. 最轻的一种关系 在方法中引入另一个类的对象 class Elephant: def __init__(self, name): self.name = name def open(self, ref): # 想要的是一个冰箱. 是哪个冰箱没有制定 print("冰箱哥哥, 开门把") ref.open_door() def close(self, ref): # 依赖关系 print("…
目录 Python - 面对对象(基础) 一. 概述 二. 创建类和对象 三. 面向对象三大特征 封装 继承 多态 Python - 面对对象(基础) 一. 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面向过程编程(Object Oriented Programming,OOP,面向对象程序设计) 最易被初学者接受,其往往用一长段代码来实现指定功能,开发…
目录 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 二.issubclass(sub, super) 三.异常处理 1. 异常处理 2.异常种类 3.异常其他结构 4.主动触发异常 5.自定义异常 6.断言 四.反射 五. 单例模式 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 class Foo(object): pass ob…
Python:面向对象编程3  定制类(有更新) ⚠️本文主要内容为对Data model相关知识点的提取学习记录.(内容来自文档和部分网页教程案例) ⚠️:这个连接指向<流畅的python>的学习笔记.https://www.cnblogs.com/chentianwei/p/11975199.html 特殊方法名称Special method names 一个类可以通过定义具有特殊名称的方法来实现由特殊语法所引发的特定操作 (例如算术运算或下标与切片). This is Python’s…
前言:本文主要介绍python面对对象中的类和继承,包括类方法.静态方法.只读属性.继承等. 一.类方法 1.类方法定义 使用装饰器@classmethod装饰,且第一个参数必须是当前类对象,该参数名一般约定为“cls",通过它来传递类的属性和方法 (不能传递实例属性和实例方法),跟实例方法的self用法相似. 2.类方法的调用 实例对象和类对象都可以调用 3.应用场景 在需要站在类的角度执行某个行为时,那么就可以定义为类方法 class Student: def __init__(self,…
一千个读者,一千个哈姆雷特.对于面对对象编程,书上都会告诉我们它有三个基本特性,封装,继承,多态,但谈起对这三点的见解,又是仁者见仁智者见智,感觉还是得多去编程中体验把 . 面向对象编程(OOP, Object Oriented Programming)是一种编写程序的方法,旨在提升开发大型程序的效率,使程序易于维护 . 面向对象编程是一种基于以下思路的程序设计方法:将关注点置于对象(Object)本身,对象的构成要素包含对象的行为及操作,以此为基础进行编程.这种方法使程序易于复用,软件的生产效…
目录 面向对象基础 面向对象编程(抽象) 类与对象 给对象定制独有的特征 对象的属性查找顺序 类与对象的绑定方法 类与数据类型 对象的高度整合 面向对象基础 面向对象编程(抽象) 回顾一下 面向过程编程(思想 ) 流水线 优点:逻辑清晰(逻辑一步步的,系统) 缺点:扩展性差(上一个函数的输出是下一个函数的输入) 面向对象编程(思想) 对象: 特征和技能的结合体 面对对象编程:一个个对象进行交互 优点:扩张性非常强 缺点:逻辑非常复杂 类与对象 类(类别):一系列具有相同特征和技能的对象 现实世界…
目录 Python - 面对对象(进阶) 类的成员 一. 字段 二. 方法 三. 属性 类的修饰符 类的特殊成员 Python - 面对对象(进阶) 类的成员 一. 字段 字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同, 普通字段属于对象 静态字段属于类 #### 字段的定义和使用 class Province: # 静态字段 country = '中国' def __init__(self, name): # 普通字段 self.name = n…
小学生绞尽脑汁也学不会的python(面对对象-----成员) 成员 class Person: def __init__(self, name, num, gender, birthday): # 成员变量(实例变量) self.name = name self.num = num self.gender = gender self.birthday = birthday # 对象来访问(成员方法)(实例方法) def marray(self, duifang): print("人会结婚%s&…
1.C++面对对象编程: a.定义: 类定义是以关键字 class 开头,后跟类的名称.类的主体是包含在一对花括号中.类定义后必须跟着一个分号或一个声明列表. 关键字 public 确定了类成员的访问属性.在类对象作用域内,公共成员在类的外部是可访问的.您也可以指定类的成员为 private 或 protected,私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问. 类提供了对象的蓝图,所以基本上,对象是根据类来创建的.声明类的对象,就像声明基本类型的变量一样: Box B…
前言:本文主要介绍python面对对象中的类和对象,包括类和对象的概念.类的定义.类属性.实例属性及实例方法等. 一.类和对象的概念 问题:什么是类?什么是实例对象? 类:是一类事物的抽象概念,不是真实存在的,描绘了该类事物共有的特征和行为 例如:猫类.狗类.鸟类.车类等 实例对象:某类事物的具体个体,是该类事物的具体表现,它是真实存在的 例如:“张三”是具体的某个“人“,”二哈“是具体的某个”狗“ 二.类的定义 关键字:class 定义类的方法: 方式一:class 类名: 方式二:class…
http://blog.chinaunix.net/uid-27464093-id-3308003.html Perl面向对象 Perl面向对象学习例子实例代码教程 - 在我们了解perl的面向对象的概念开始之前,让我们了解引用和匿名数组和哈希表. 在我们了解perl的面向对象的概念开始之前,让我们了解引用和匿名数组和哈希表. 引用 引用是完全像名称所暗示的一样,给另一个对象的引用或指针. 有两种类型的引用:符号和硬引用. 一个符号参考,使您能够引用一个变量的名称,使用另一个变量值. 例如,如果…
面对过程的程序设计方法意在将函数分成子函数,再依次调用这些函数来解决问题. 而面对对象的程序设计方法,来源于自然界,类是实例的抽象,实例是类的具体.自定义出来的对象是类,而所有的数据都可以看成是对象,因此解决问题的方法是靠对象自己处理消息和相互传递消息.使用时,首先考虑的是需要创建什么样的对象,对象中有怎么样的属性,要实现什么功能(成为方法). 面向对象的抽象程度比函数要高,因为一个class中既包含数据,又包含操作数据的方法.其中,数据封装.继承和多态是面向对象的三大特点. 创建类时,clas…
很有一段时间没使用python了,前两天研究微信公众号使用了下python的django服务,感觉好多知识都遗忘了,毕竟之前没有深入的实践,长期不使用就忘得快.本博的主要目的就是对Python中我认为重要的面对对象知识进行总结,一是加深记忆,而是方便日后遗忘了好迅速的捡起来. 目录索引: (1)隐式的基类object (2)python中类和对象的区别 (3)实现python风格类所用特殊方法 (a)__all__和__slots__ (b)__format__().__repr__()和__s…
面对对象:以人类为例,人类通用功能:吃喝拉撒,就可以封装成一个类,不同功能:嫖赌毒,就是对象的不同功能.继承,多态… 上码 class Person(object): def __init__(self,eat,dink,la): self.eat=eat self.dink=dink self.la=la print('构造方法') def __call__(self,*args,**kwargs): print("类直接调用") def public(self): print(&q…
面对过程VS面对对象 面向过程的程序设计的核心是过程,过程就是解决问题的步骤,面向过程的设计就是考虑周全什么时候处理什么东西 优点:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点 :一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 类和对象 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 对象:通过类定义的数据结构实例.对象包括两个数据成员(类变量和实例变量)和方法. 创建类 使用c…
一.构造方法 在使用类创建对象的时候(就是类后面加括号)就自动执行__init__方法. class A: def __init__(self): print('A') class B: def __init__(self): print('B') obj = A() #虽然只是创建了obj对象,但是执行了__init__方法,输出了A Python中派生类可以继承父类的构造方法 1.基于super() 遇到super()就表示去执行父类的xxx属性 class A: def __init__(…
说到js,非常大一部分人会说我非常熟悉,在日常的web开发中经经常使用,那么你的js代码是符合面对对象思路的吗?那你会问我面向过程的js代码有什么不好吗?我的感受是面对对象的js编码更加简洁,降低了混乱,可维护行增强,适合编写富client时应用. 好了,首先看看js里怎样定义对象: <html> <head> <script type="text/javascript"> var obj=new Object(); obj.name='josh';…
上篇博客中解说了一些js对象的基本概念和使用方法.这篇博客解说一下js属性方面的:公有属性.私有属性,特权方法. 假设学过java.公有属性.私有属性,特权方法(即能够訪问和设置私有属性的方法)一定非常熟悉.那么让我们来看看在js里怎样实现呢? 1.公有属性 首先看公有的第一层意思是能够被大家所訪问的.对外开放的属性,是相对于私有属性而言的: function Person(name,age){ this.name=name; this.age=age; this.getName=functio…
面对对象常用的一些关键子:http://www.cnblogs.com/xishaonian/p/6146794.html排版不是很好望见谅. THE END…