面向对象方法

Python面向对象之魔术方法

醉酒当歌 提交于 2020-02-27 04:40:00
__str__ 改变对象的字符串显示。可以理解为使用print函数打印一个对象时,会自动调用对象的__str__方法 class Student: def __init__(self, name, age): self.name = name self.age = age # 定义对象的字符串表示 def __str__(self): return self.name s1 = Student('张三', 24) print(s1) # 会调用s1的__str__方法 __repr__ 在python解释器环境下,会默认显示对象的repr表示。 >>> class Student: ... def __init__(self, name, age): ... self.name = name ... self.age = age ... def __repr__(self): ... return self.name ... >>> s1 = Student('张三', 24) >>> s1 张三 总结: str函数或者print函数调用的是obj.__str__() repr函数或者交互式解释器调用的是obj.__repr__() 注意: 如果__str__没有被定义,那么就会使用__repr__来代替输出。 __str__和__repr__方法的返回值都必须是字符串。 _

JavaScript—面向对象小例子

匆匆过客 提交于 2020-02-26 22:29:18
什么是面向对象 要是以前别人问我。随口道来,封装继承多态,万物皆对象。。。一大推。说的自己都以为自己掌握了面向对象。呵呵一笑。确实掌握了 只是不会用。。。。。 什么是面向对象编程 以前 学。Net 虽然MVC 本身就是面向对象。也就没管什么思想,就记住步骤,跟着写就好。 现在想想,那时候还是太年轻了,当我看了设计模式里面对MCV的一个解释。发现并不是这么回事,面向对象 学问可大了,学好面向对象,锻炼思想,便开始虚心起来,觉得不简单。 废话说了那么多。 什么是面向对象编程。现在 我觉得 就是以对象的方式去写代码,不在考虑怎么一步步的实现效果。 按照之前我们可能会 先写10个DIV 然后随机位置 随机颜色 一步步  按照面向对象 就不在这样想了 先看有几个对象 在属性 方法。。   这个有一个盒子对象。 盒子有大小 位置 背景颜色这些属性   有随机颜色 随机位置 和出现的方法 那么就可以开始动手了 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } #container { width: 800px; height: 800px; background-color: #cccccc;

面向对象

大兔子大兔子 提交于 2020-02-26 21:02:40
面向对象三大特征 封装 多态 继承 类 对象 单继承 super 类的约束 异常处理 类的私有成员 属性 反射 isinstance和issubclass type 双下方法 面向对象(类)三大特征 封装 指函数,模块,类,对象等,将一些数据或者内容封装到一个空间 , 可以调用 多态 指一种事物多种形态 python 默认支持多态(变量可以指向任意数据类型) 同⼀个变量a可以是多种形态。鸭子类型 :两个类中有相同的方法 , 继承 指子类(子类的对象)可以调用父类(基类)的属性与方法 鸭子类型:看着像鸭子就是鸭子.,A,B完全没有耦合性,但是某种意义上形成了一种标准. 类 优点: 1,类是相似功能的集合体,组织结构更清晰 2,拥有上帝的思维,制作一个公共模板. 从类名的角度分析: 1, 类名查看类中所有的属性 Human.__dict__ 2, 类名操作单独属性. 万能的. 查:Human.mind 增:Human.emotion = '有情感' 改: Human.mind = '无脑' 删:del Human.mind 类名调用方法(不推荐使用). __init__里面不能有return 对象 : 类名+()就是实例化对象 三步: a,在内存中开辟一个对象空间. b,自动执行__init__方法,将对象空间传给self c,执行__init__方法,给对象空间封装属性. 对象

面向对象的三大特征

蓝咒 提交于 2020-02-26 07:29:10
面向对象的三大特征:封装、继承、多态 封装 封装,就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。 继承 继承,指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过 “继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用 基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力。 多态 多态,是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作

python ---16 初识面向对象

╄→гoц情女王★ 提交于 2020-02-26 03:06:33
面向对象 一 .面向对象和面向过程比较     ①面向过程:一切以事物的发展流程为核心          优点:负责的问题流程化,编写相对简单          缺点:可扩展性差     ②面向对象:一切以对象为中心. 一切皆为对象.           具体的某一个事务就是对象          优点:可扩展性强          缺点:编程的复杂度高于面向过程 二.类和对象     ①类:就是图纸,创建对象的第一步      对象:通过类造出来的具体事物,     ②基本格式     class 类名: #创建类 类名用驼峰格式       def __init__(self,参数): # self当前类的对象,参数一般作为属性         self.属性 = 值         self.属性 = 值         def 方法(self , 参数) #即函数         方法体(函数体,return)     变量 = 类名() #创建对象     变量.属性 #访问对象的属性信息     变量.方法() #访问类中的方法 三.3大特征 ( 封装, 继承, 多态.)   ①封装   1.对属性的封装 2.对方法和功能的封装 3.模块和包   ②继承 :     ⼦类可以⾃动拥有⽗类中除了私有属性外的其他所有内容.      对父类进行扩展      

Python编程 ---面向对象基础

被刻印的时光 ゝ 提交于 2020-02-25 22:17:59
文章目录 面向对象三要素 类的定义 类方法和静态方法 访问控制 面向对象三要素 封装 组装:将一组数据结构和操作这些数据结构的方法组装到一起 隐藏数据:对外只暴露一些接口,通过接口访问对象。就像开车一样,你不知道车的组成原理,但是知道车辆驱动的方式就行了 继承 多复用:子类能够继承父类或以上的类的方法,这样来自继承类的方法就可以不用自己再编写代码。使代码更加精简。 多继承少修改:能够继承大部分特性,再通过重写的方式来增加一些特色 多态 不同的子类继承父类的同一方法,然后通过重写或者覆盖的方式来增加子类的特色,从而实现多态 类的定义 1.使用关键字class 2.类名建议使用大驼峰方式,本质上是个标识符 3.类定义完成后,会生成一个类对象,绑定到了类名上 class School : """这是个学校类""" a = 123 x = 'abc' def __init__ ( self , name , level ) : self . name = name self . level = level def show_propertites ( self ) : return 'name is {}, level is {}' . format ( self . name , self . level ) school1 = School ( 'school_a' , 'grade

第1章 类和对象—面向对象概念

[亡魂溺海] 提交于 2020-02-25 22:12:34
面向对象程序设计( Object-Oriented Programming , OOP )是一种程序设计架构,同时也是一种程序开发的方法。对象指的是类的实例,它将对象作为程序的基本单元,将程序和数据封装其中,以提高代码的重用性、灵活性和扩展性。 1.1 面向对象概念 时间是由什么组成的?现实世界是由一个一个对象组成的,例如看到的东西、听到的事件、想到的事情,这些都是对象,也就是说万事万物皆对象。不同的对象,既相互独立,又相互联系,人们面向的世界是“面向对象”的。 1.1.1 对象抽象成类 对象( Object )抽象为类( Class )的过程,是在系统分析阶段完成的。 1. 分析对象的特征 对象是人们要分析的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件,不同的对象呈现不同的特征 。由于对象反映了现实世界,人们通过面向对象的方法就可以找到合理地解决问题的方法。怎么区分这些对象呢?就是分析与系统相关的特征,包括状态(静态特征)和操作(动态特征)。如图 1-1 所示为对象的部分特征的分析。 状态:用于描述对象的静态特征,表示对象“是什么样子”。对象的状态用一些数据来描述,在程序中称为字段或属性。 操作:用于描述对象的动态特征,表示对象“能做什么”。对象的操作用于改变对象的状态,对象的操作就是对象的行为,在程序称为方法或函数 。 对象实现了状态和操作的结合

面向对象 总结笔记

断了今生、忘了曾经 提交于 2020-02-25 22:11:04
1.面向对象 面向对象的特点:封装、继承、多态、抽象 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。 继承:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。 多态:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作 抽象 温馨提示:对象与实例是同一个概念,创建一个对象就是创建一个实例。程序员最不缺的就是对象,想要自己就new一个呗。 2.类 public class A { //成员属性 private String name; private int age; //构造方法,一般用于对象的初始化 A(String name,int age) { super();//这个super是默认隐藏的,继承父类的构造方法。 this.name=name; this.age=age; } //toString方法,默认返回哈希值 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode());

北航OO课程完结总结

独自空忆成欢 提交于 2020-02-25 18:55:42
什么是OO? 面向对象,是一种编程的思想方法,但是在这门课程中,我们实际学习到的是将理论运用到具体实践上,将自己的想法付诸实践,不断去探索和优化的这一体验。 后两次作业架构总结 本单元两次作业,我们面对的是一个比较大的数据模型,类似于图,因此首先是如何存储以便方便访问和查找,我首先是实现的是最简单的暴力存储,对于所有的指令都存到一个可变数组中,需要用时再进行查找,但是在后面不断实现方法的过程中却发现,这个方法十分累赘,不仅没有用到面向对象的思想,而且每次查找使用多层遍历的方法将使得时间复杂度相当高,后来将UML图的类,接口等数据结构都建立对象来进行管理,面向对象的思想在最后两次作业中突出的比较明显,而这样的想法也是本学期前面多次训练的结果,因此我使用的架构就是对类,接口,方法,继承,实现等等要素进行对象化管理,建立他们自身的属性和方法,最终在一个类中进行调用,避免了多次重复的遍历,明显降低了时间复杂度。 前四次作业OO演进 第一单元的多项式作业对于我来说是一个十分巨大的挑战,初次接触这种工程量较大,信息量较复杂的题目,在数据结构和C语言中我总是习惯一个主函数来实现所有的方法和功能,而其他的函数只是一些细枝末节的补充,只是使代码看起来更加简洁,但是实际上对整体设计没有过多影响,可以说是一个函数莽到底,在第一单元的作业中我也是使用类似的想法,对于算法的设计十分关注

61条面向对象设计的经验原则

亡梦爱人 提交于 2020-02-25 03:48:21
61条面向对象设计的经验原则 你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。   -----Arthur J.Riel   (1)所有数据都应该隐藏在所在的类的内部。p13   (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。p15   (3)尽量减少类的协议中的消息。p16   (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。 p16   (5)不要把实现细节(例如放置共用代码的私有函数)放到类的公有接口中。p17   如果类的两个方法有一段公共代码,那么就可以创建一个防止这些公共代码的私有函数。   (6)不要以用户无法使用或不感兴趣的东西扰乱类的公有接口。p17   (7)类之间应该零耦合,或者只有导出耦合关系。也即,一个类要么同另一个类毫无关系,要么只使用另一个类的公有接口中的操作。 p18   (8)类应该只表示一个关键抽象。p19   包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响 .   (9)把相关的数据和行为集中放置。p19   设计者应当留意那些通过get之类操作从别的对象中获取数据的对象