博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第九章 Python之面向对象
阅读量:5885 次
发布时间:2019-06-19

本文共 2643 字,大约阅读时间需要 8 分钟。

面向对象编程

  面向对象编程是一种程序设计思想,它把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数

  面向过程的程序设计把计算机程序视为一系列命令的集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数来降低系统的复杂度

  而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递

类和实例

  类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”

#定义类#类体代码在类的定义阶段就会立刻执行class Student:          #class后面紧接着是类名,类名通常是大写开头的单词    school='oldgirl'    def learn(self):        print('is learning')    def choose_course(self):        print('choose course')    print('===run')#查看属性print(Student.__dict__)  #查看类的名称空间print(Student.school)    #访问类的数据属性,等同于Student.__dic__['school']print(Student.learn)     #访问类的函数属性#增加属性Student.country='China'  #等同于Student.__dic__['country']='China'print(Student.country)#修改属性print(Student.school='Oldgirl')#删除属性del Student.country
class Student:    school='oldgirl'#__init__方法是在产生对象后才会执行,只用来为对象进行初始化操作,把name,age等属性绑上去,且不能有返回值    def __init__(self,name,age):        self.name=name        self.age=age    def learn(self):        print('is learning')    def choose_course(self):        print('choose course')#调用类即实例化(首先得到一个返回值即对象,该对象是一个空对象stu1; #其次执行Student__init__(stu1,'lary',18))stu1=Student('lary',18)     #stu1.name='lary',stu1.age=18print(stu1.name,stu1.age)

属性查找与绑定方法

   查找对象的属性顺序是:对象自己的__dict__,再找类的__dict__

  类的数据属性是所有对象共享,类的函数属性是绑定给对象用的

class Student:    school='oldgirl'    def __init__(self,name,age):        self.name=name        self.age=age    def learn(self):        print('%s is learning'%self.name)    def choose_course(self):        print('choose course')stu1=Student('lary',18)stu2=Student('egon',20)#类的数据属性是所有对象共享的print(id(stu1.school),id(stu2.school))#类的函数属性是绑定给对象用的print(stu1.learn,stu2.learn)#
>#绑定类中定义的函数是绑定给对象用的,不同的对象就是不同的绑定方法#绑定给谁,就由谁来调用,谁调用,就将该对象当作第一个参数传给方法,即自动传值stu1.learn() #stu1.learn=Student.learn(stu1)Student.learn(stu1) #类调用自身的方法需给位置参数传值#绑定到对象的方法这种自动传值的特征,决定了在类中定义的函数都要写一个默认参数(习惯用self,其他名字也可以)

类即类型

  python中一切皆对象,且python3中类与类型是一个概念,类即类型

#类即类型class Teacher:    school='oldboy'    count=0    def __init__(self,name,age,sex):        self.Name=name        self.Age=age        self.Sex=sex        Teacher.count+=1    def teach(self):        print('%s teaching'%self.Name)    def course(self):        print('%s teach course'%self.Name)teacher1=Teacher('egon',18,'male')print(type(teacher1))p=[1,2,3,4]  #p=list([1,2,3,4])print(type(p))p.append(5)  #list.append(p,5)print(p)

isinstance 和issubclass

#isinstance(obj,cls)检查是否obj是否是类 cls 的对象class Foo(object):    passobj = Foo()print(isinstance(obj,Foo))

 

#issubclass(sub, super)检查sub类是否是 super 类的派生类class Foo(object):    passclass Bar(Foo):    passprint(issubclass(Bar,Foo))

 

转载于:https://www.cnblogs.com/iamluoli/p/8298174.html

你可能感兴趣的文章
centOS_5.4_安装Open×××
查看>>
Spring Security OAuth2 开发指南
查看>>
TCP
查看>>
参观迅达云成公司有感
查看>>
mount挂载NTFS失败
查看>>
CentOS6.5安装MariaDB10.0.15编译安装和多实例管理配置
查看>>
lua 自定义lib
查看>>
U盘安装centos6.5
查看>>
protobuf消息的自动派发
查看>>
openssl
查看>>
Mybatis多个参数映射
查看>>
ubuntu不能登陆死循环问题解决
查看>>
exchange 2016 安装开源垃圾邮件网关
查看>>
javascript鼠标事件【部分】
查看>>
SSH 通过密钥登录
查看>>
今天只是一个开始
查看>>
Mycat读写分离以及拆库拆表综合实验2:部署配置mycat读写分离与拆库拆表
查看>>
程序至上
查看>>
我的友情链接
查看>>
新书上市:《ANSYS 14.0超级学习手册》
查看>>