Python基础教程笔记——第7章:更加抽象(类)
下面进入Python的面向对象:
对象的魔力:
多态:---可以对不同类的对象使用同样的操作
封装:---对外部隐藏对象内部的工作方式
继承:---以普通的类为基础建立专门的类对象
(1)多态:
isinstance(...)
isinstance(object, class-or-type-or-tuple) -> bool 检查object的类型
isinstance(object, tuple) 检查是否为元组
绑定到对象上的函数称为方法 例如>>> [1,2,'a','1','a'].count('a') 2
repr(object) -> string 一种多态的方式,无论什么转化为字符串
(2)封装
(3)继承
7.2 类和类型
(1)创建使用自己的类
__metaclass__=type class Person:
def setName(self,name):#这个self变量作为第一个参数传入函数,来绑定对象
self.name=name
def getname(self):
return self.name
def greet(self):
print("hello word my name is %s" % self.name) #类的使用
>>> foo=Person()#实例化一个对象
>>> foo.setName("yanliang")#调用对象的方法
>>> foo.getname()
'yanliang'
>>> foo.greet()
hello word my name is yanliang #特性是可以在外部访问的(这里和C++的私有成员有点区别)
>>> foo.name='yan'
>>> foo.getname()
'yan'
(2)特性,函数,方法
1. 前面的self参数正是方法和函数的区别了,方法可以将它的的一个参数绑定到它的实例上,而函数没有
但是这个参数也是可以不用提供的,就没有了self参数了
#__metaclass__=type
class class1:
def method(self):
print("yanliang") def func():
print("yan") >>> a=class1()
>>> a.method()
yanliang
>>> a.method=func#可以将特性绑定到普通的函数身上
>>> a.method()
yan
class bird:
sing="yanliang"
def singing(self):
print(self.sing) #调用上面类的函数
>>> bird1=bird()
>>> bird1.singing()
yanliang #可以将对象的变量赋值给别人
>>> a=bird1.sing
>>> a
'yanliang' #可以将对象的方法绑定到一个变量上去(还需要对self参数的访问)
>>> birdsing=bird1.singing
>>> birdsing()
yanliang
对象内部成员的私有化
Python不直接支持私有的方式:
让特性或者方法变成私有只要在它的前面加上双下划线就可以了。
class pclass:
__val1="yanliang" def __fun1(self):
print(self.__val1) def fun2(self):
self.__fun1()
#当调用这个类对象时,外部对__val1特性和__fun1方法是没有权利的
类的定义其实就是只是在执行代码块
类里面的所有实例访问的变量和实例自己所拥有的变量:
class class1:
members=0;
def init(self):
class1.members+=1 >>> a=class1()
>>> a.init()
>>> class1.members#这里有点类似于C++的静态成员变量
1
>>> b=class1()
>>> b.init()
>>> class1.members
2 >>> a.members="yanliang"#这里类似于C++一般的数据成员变量
>>> a.members
'yanliang'
>>> class1.members
2
超类(基类)
在定义时在类名后面加一个括号,括号里面为超类。
class class1:
def init(self):
self.num="yan"
def print1(self):#子类直接继承基类的print1函数,就不需要再写了
print(self.num) class class2(class1):
def init(self):#这里的子类class2会重写超类的init函数
self.num="yanliang" >>> a=class1()
>>> a.init()
>>> a.print1()
yan >>> b=class2()
>>> b.init()
>>> b.print1()
yanliang
可以采用内建的>>> issubclass(class2,class1) 函数来判断一个类是否是另外一个类的子类
可以采用>>> class2.__bases__来找到已知类的所有基类(<class '__main__.class1'>,)
可以采用>>> isinstance(a,class1)来判断一个对象是否是一个类的实例
Python基础教程笔记——第7章:更加抽象(类)的更多相关文章
- Python基础教程笔记——第6章:抽象(函数)
(1)计算裴波那契数列: fbis=[0,1] num=int(input("please input the number")) for i in range(num-2): f ...
- Python基础教程笔记——第4章:字典
字典 字典是Python唯一内建的数学映射类型,字典中的值没有特殊的顺序,键可以是数字,字符串,甚至是元组 字典的创建: 字典由键值对构成,字典中键是唯一的,而值不唯一.>>> a_ ...
- Python基础教程笔记——第2章:列表和元组
python shell 里重复上一次的命令:Alt+p 2.3 列表:Python的苦力 (1)list函数 (2)列表赋值,不蹦蹦为一个元素不存在的位置赋值 (3)删除元素,del name[1] ...
- Python基础教程笔记——第1章
1.8 函数 pow(x,y) x^y abs(x) 取数的绝对值 round(x) 会把浮点数四舍五入为最接近的整数 floor(x) 向下取整的函数,但是需要先imp ...
- Python基础教程笔记——第5章:条件,循环和其他语句
5.1 print和import的更多信息 1. print()3.0之后print不再是语句,而是函数, >>> print('udg',12,13) udg 12 13 &g ...
- Python基础教程笔记——第3章:使用字符串
字符串是不可修改的,标准序列操作(索引,分片,判断成员资格,求长度,取最大值 最小值)对字符串都是有效的. 格式化字符串,类似于C语言的输出是的感觉. >>> format=&quo ...
- 《Python基础教程》第六章:抽象(一)
用def定义函数 __doc__是函数属性.属性名中的双下划线表示它是个特殊属性
- python基础教程笔记—即时标记(详解)
最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...
- python基础教程笔记—画幅好画(详解)
今天写一下基础教程里面的第二个项目,主要使用python来做一个pdf的图,比较简单. 首先我们需要安装用到的模块pip install reportlab即可. 书上是用urlopen从往上下了一个 ...
随机推荐
- hashlib加密模块详解
1.hash是把任意长度的消息压缩到某一固定长度的数值的函数. hash主要用于安全加密,把一些不同长度的信息转化成杂乱的128位编码里,叫做hash值. hash就是把内容和内容地址之间找到一种映射 ...
- Windows 2016 安装Sharepoint 2016 预装组件失败
Windows 2016 安装Sharepoint 2016 预装组件失败 日志如下: -- :: - Request for install time of Web 服务器(IIS)角色 -- :: ...
- js单线程和js异步操作的几种方法
一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事. JavaScript的单线程,与它的用途有关.作为浏览器脚本语言,JavaS ...
- 最新精品 强势来袭 XP,32/64位Win7,32/64位Win8,32/64位Win10系统【国庆版版】
本系统是10月最新完整版本的Windows10 安装版镜像,Win10正式版,更新了重要补丁,提升应用加载速度,微软和百度今天宣布达成合作,百度成为Win10 Edge浏览器中国默认主页和搜索引擎,系 ...
- SQLite – 删除表
SQLite -删除表 SQLite DROP TABLE语句用于删除一个表定义和所有相关的数据,索引.触发器.约束和规范许可表. 你使用这个命令时必须小心,因为一旦一个表被删除然后表中所有可用的信息 ...
- TensorFlow低阶API(四)—— 图和会话
简介 TensorFlow使用数据流图将计算表示为独立的指令之间的依赖关系.这可生成低级别的编程模型,在该模型中,您首先定义数据流图,然后创建TensorFlow会话,以便在一组本地和远程设备上运行图 ...
- 20针,14针,10针JTAG引脚对应关系
J-Link是常用的调试工具,用于程序的调试和下载.常用的J-Link的的接口有很多种,常见的有20针,14针和10针. J-Link可以使用JTAG方式下载调试程序,也可以使用SWD方式.从引脚方面 ...
- 命令终端执行python
windows进入cmd 1.进入cmd窗口,找到存放py文件的地址(如E:\learn_mock) 2.退出python,输入exit() linux下一样
- Low Speed High Torque Hydraulic Motor: Motion Performance
Crank connecting rod type low speed high torque hydraulic motor is used earlier, which is called Sta ...
- Java集合系列之HashMap
概要 第1部分 HashMap介绍 HashMap简介 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射.HashMap 继承于AbstractMap,实现了Map.Clo ...