python面向对象
python面向对象部分内容,以及面向对象的思维
黄康诚
这个作者很懒,什么都没留下…
展开
-
python面向对象1:class(类)的初始化方法(__init__)
初始化方法作用:对新创建的对象添加实例变量(属性)或相应的资源基本语法:#必须是init,前后为双下划线__class 类名(继承列表): def __init__(self,形参列表): 语句块语法说明:1.初始化方法命名,必须为__init__(双下滑)2.初始化方法会在构造函数创建实例后,自动调用,且次实例自身通过第一个参数self传入__init__方法。3.构造...原创 2019-12-18 23:15:07 · 1082 阅读 · 1 评论 -
python面向对象2:class(类)的析构方法(__del__)
作用,基本语法#创建一个学生类class Students: def __init__(self, name, age): '''初始化方法''' print('__init__被自动调用了') def __del__(self): '''析构方法''' print('__del__被自动调用了') s1 = Students('小明', '26')...原创 2019-12-19 14:18:43 · 644 阅读 · 0 评论 -
python面向对象3:class(类)删除属性及删除对象
1.创建一个class,并添加若干属性#创建一个Cat类class Cat: pass #把cat1定义为属于Cat(的类)cat1 = Cat() #为cat1添加‘颜色’‘名字’两个属性cat1.color = 'red' cat1.name = 'kitty' print(cat1.color)print(cat1.name)运行结果:2.删除类的某个属...原创 2019-12-18 22:48:36 · 8007 阅读 · 1 评论 -
python面向对象4:class(类)的文档字符串【选】
是什么?class的文档字符串,其实质就是帮助文档。python的类,内置了__doc__方法,对其进行调用。我们经常会看到这样的代码:(三个单引号的注释就是class的文档字符串):如何调用:class Dog: '''类的文档字符串''' def __init__(self, color, kind): '''__init__方法的文档字符串:初始化Dog的属性''' se...原创 2019-12-20 17:56:06 · 393 阅读 · 0 评论 -
python面向对象5:class(类)的预置属性
作用:__dict__是一个用来存储对象属性的字典__class__绑定一个对象的类__dict__基本语法:#创建一个类class Dog(): passdog1 = Dog()print(dog1.__dict__)dog1.name = 'wangwang'print(dog1.__dict__)__class__基础语法:#创建一个dog1的同类dog2 =...原创 2019-12-20 02:13:37 · 164 阅读 · 0 评论 -
python面向对象6:class(类)的__slots__列表
作用:1.限定一个类的实例只能有固定的属性2.通常为防止错写属性名而发生运行时的错误基本语法:__slots___ = ['属性一','属性二']注意:用了__slots__列表,这个类里面就只能含有列表中的属性,如果包含其他属性,会被报错。示例(没有使用__slots__):class Student: def __init__(self, name, score): ...原创 2019-12-21 00:17:09 · 216 阅读 · 0 评论 -
python面向对象7:类(class)变量
介绍:对于学习过python基础的人来说,对于变量肯定不陌生。变量又分全局变量(global)和局部变量。1.类变量既不属于全局变量,又不属于局部变量。它是一个类里面的变量。2.类变量作用于一个类。示例:创建一个类变量,用于统计这个类一共有多少个对象。class Dog: count = 0 #这就是一个类变量 def __init__(self, color, kind): ...原创 2019-12-20 16:07:00 · 362 阅读 · 0 评论 -
python面向对象8:类(class)方法
在学习过类变量之后,我们看到,类可以拥有自己的变量,那么同理,类同样可以拥有自己的方法。说明:1.类方法描述类的行为2.类方法属于类3.类方法需要用==@classmethod装饰器==定义4.类方法至少有一个形参,第一个形参用于绑定类,约定写为’cls’5.类和该类的实例都可以调用类方法示例:class Car: count = 0 @classmethod ...原创 2019-12-21 01:17:29 · 161 阅读 · 0 评论 -
python面向对象9:静态方法
说明:静态方法的本质任然是函数,只是把这个函数进行归类在面向对象的思想中,整个过程,就是给对象和方法归类。当某一函数需要调用,但却只有在某一个类中才需要用到的时候,我们可以给类定义一个静态方法来实现。示例1(全局调用):def plus(x, y): return x+yclass Car: pass print(plus(1, 2))我们发现,在...原创 2019-12-21 01:40:28 · 185 阅读 · 0 评论 -
pyhton面向对象10:一个简单class(类)的定义【练习】
面向对象的思想:1.用类方法,操作类变量2.给别人一系列方法,去操作变量3.执行程序尽可能不用类变量和实例变量。用方法去操作练习:要求:1.创建一个Student类2.列表存储;‘name’,‘age’,'score’三个信息3.能够统计学生总数4.能够删除,或者添加学生5.能够计算平均分输出:1.学生信息2.平均分3.学生数量class Student: c...原创 2019-12-21 03:38:56 · 270 阅读 · 0 评论 -
python面向对象11:类(class)的继承和派生
相关名词介绍:父类,基类,超类(一个意思),指被继承的那个类说明(python类的底层设计):1.任何类都直接或间接的继承自object类2.object类是一切类的超类3.python3继承列表缺省,默认为object类作用:1.子类拥有父类所有的方法。2.使程序自动进行调用,而无需手动复制粘贴。3.后期修改程序,更加便捷基本语法:class 类名(继承类名): p...原创 2019-12-21 15:18:43 · 270 阅读 · 0 评论 -
python面向对象12:类(class)的方法覆盖
覆盖:override什么是覆盖:覆盖是指在有继承关系的类中,子类中实现了与基类同名的方法,在子类实例调用该方法时,实例调用的是子类的覆盖版本方法,这种现象就做覆盖。没有覆盖的情况下,直接调用父类方法:class Human: def name(self): print('我的名字是Human')class Student(Human): passs1...原创 2019-12-21 18:15:17 · 723 阅读 · 0 评论 -
python面向对象13:super函数显示调用父类初始化方法
简介:在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需要调用父类的方法了,可通过使用 super 来实super基本语法:super(子类名,对象).父类方法示例:class Human: def __init__(self, name, age): self.name = name ...原创 2019-12-21 19:25:58 · 290 阅读 · 0 评论 -
python面向对象14:issubclass判断是否是子类
简介:issubclass是python内建的一个用于类的函数。用途:用来判断,某个类,是否是另一个类的子类。如果是,会返回True,如果不是返回False基本语法:#判断cls是否是class_tuple里面某个类的子类issubclass(cls,class_tuple)示例:class A: passclass B(A): passclass C(B): pass...原创 2019-12-21 20:20:10 · 899 阅读 · 0 评论 -
python面向对象15:封装(enclosure)的概念,用途及私有属性封装
封装:封装是指隐藏类的实现细节,让使用者不关心这些细节封装的目的是让使用者尽可能少的操作示例变量(属性)为什么要封装?打个比方:一辆汽车,由上万个零件组成,而用户操作的基本只有:方向盘,油门,刹车,离合器等。汽车公司把成千上万个零件,封装成几个可供用户使用的方法。不仅降低了用户的操作难度,也可以防止不懂汽车原理的用户,胡乱使用各种零件。一辆未经封装的汽车,只有专门从事这个行业的专业人...原创 2019-12-22 21:20:26 · 338 阅读 · 0 评论 -
pyhton面向对象16:多态(polymorphic)的概念及简单演示
多态:polymorphic1.字面意思:“多种状态”2. 多态是指在继承/派生关系的类中,调用基类对象的方法,实现能调用子类的覆盖版本的方法的现象叫多态说明:1.多态调用的方法与对象相关,不与类型相关2.python的全部对象都只有“运行时状态(动态)”,没有“c++/java”里的“编译时状态(静态)”3.这个概念相对于初学者比较难理解,但是对于有静态语言编程基础的人来说,两者对比...原创 2019-12-22 22:03:51 · 275 阅读 · 0 评论 -
pyhton面向对象17:多继承(multiple inheritance)特性的优点和缺陷
多继承:multiple inheritance字面意思:多继承是指一个子类继承自两个或两个以上的基类。基本语法:class 类名(基类1,基类2,.......): 语句块说明:1.一个子类同时继承自多个父类,父类中的方法可以同时被继承。2.如果两个父类中有同名方法,而在子类中有没有覆盖此方法,调用结果难以确定。(可以调用MRO方法查询,python内部是有一定机制解决这个问题...原创 2019-12-23 01:44:18 · 258 阅读 · 0 评论 -
pyhton面向对象18:继承的MRO(Method Resolution Order)问题
类内的__mro__属性用来记录继承方法的查找顺序说明:上一篇文章,提到了python语言的多继承特性。也谈过了多继承会出现的一些问题。下面我们先定义一个相对复杂的继承逻辑(肉眼比较难看出)。如果我们非要用到多继承,又搞不清他的继承顺序的时候。我们可以使用类内的__mro__方法,进行查找。示例:继承关系示意:#在多继承中的方法查找顺序class A: def m(self...原创 2019-12-23 15:16:51 · 114 阅读 · 0 评论 -
pyhton面向对象19:小练习【对于继承的理解】
练习:1.已知python内置的list列表这个类中没有insert_head方法2.写一个自定义类MyList,继承自list3.在MyList类内添加insert_head方法。实现添加元素到列表开头的功能预期效果展示:list1 = MyList([1,2,3])list1.insert_head(0)print(list1) #[0,1,2,3]分析:Mylist类...原创 2019-12-23 15:33:47 · 202 阅读 · 0 评论