欢迎来到天天文库
浏览记录
ID:46613060
大小:70.00 KB
页数:5页
时间:2019-11-26
《Python面向对象基础》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Python面向对象基础什么是面向对象编程?面向对象编程是一种程序设计的范式,它把程序当做不同对彖的相互调用,是对现实世界建立的一种对象模型。面向对象编程的基本思想,也就是类和实例。类:类是用于定义抽彖的类型。比如人,是一类东西实例:实例是根据类的定义被创建出来的。比如小红同学,就是根据人的属性创建出来的。#我们通过class关键字定义一个类classPerson:pass#通过类来创建一个实例,即类名加上一个类似于函数的调用来创建实例xiaohong=Person()数据封装:数据封装是面向对象一个很重要的特性classPerson:def_
2、init_(self):self.name=name#初始化实例的属性,self代表的是当前实例pl=Person('XiaoHong*)属性访问限制我们可以给一个实例绑定很多属性,我们可以通过在属性名开头加上双下划线(_),让这些属性不被外部访问。看下面例子:classPerson:def_init_(selfname):self•name=nameself._title='Mr'#单下划线self._job='Student*#双下划线表示私有属性#创建一个Person实例p=Person("Tom1)p“int(p.name)print(
3、p・_title)print(p._job)=>TomMrTraceback(mostrecentcalllast)in()7p=Person('Tom')8print(p.name)-——>9print(p>_job)AttributeError:Personinstaneehasnoattribute1_job'由此可见,双下划线开头'_job‘不能直接被外部访问。但是问题来了,如果属性以‘XXX,形式定义,那它又可以被外部访问。因为以‘XXX症义的属性在pytho
4、n的类中被称为特殊属性,比如—init_/cmp/str/—int_等等这些都是类预先定义的特殊属性。通常我们不会以这种形式定义属性。值得说明的是,以单下划线开头的,应该是不能被外部访问的,到底为什么,我也不知道。为类创建属性类是模板,而实例是根据类创建的对彖。实例属性每一个实例各口拥有,相互独立,而类属性只有一份。为类屈性和实例屈性名字冲突时,优先选择实例屈性。classPerson:job=1Student1def_init_(selfname):seif・name=name#创建一个Person实例pl=Person()p2=Person
5、(1Dak1)print(Person.job)#直接访问类的属性#因为python是动态语言,类实质也是个对象,所有类的属性也是可以动态添加和修改的Person.job=*Teacher1print(Person・job)#实例属性每一个实例各自拥有,相互独立。print(pl.name)print(p2・name)=>StudentTeacherTomDak因此,实例属性每一个实例各自拥有,相互独立,而类属性只有一份。定义实例方法实例的私有属性是rti双下划线开头的属性,无法被外部访问,但内部是可以访问的。实例方法就是在类中定义的函数,它的
6、第一个参数永远是self,指向调用该方法的实例本身。在实例方法内部,可以访问所有实例屈性,如果外部需要访问实例屈性,对以通过方法调用获得。classPerson:def_init_(selfname):self._name=namedefame(self):returnself._namepl=Person('Tom')print(pl•get_name())=>Tom万事万物接对象,类和函数都是对象。pl=Person('Tom')print(pl)pcint(pl•ame)print(pl•get_name())=><_main_.Pers
7、oninstanceat0x000000000BBAD448>>Tom创建类的方法和属性类似,方法也分实例方法和类方法。在类中定义的全部是实例方法,实例方法第一个参数self是实例本身。在在类中定义类的方法,需耍在方法上面使用@classmethodclassPerson(object):count=0@classmethoddefhow_many(cis):#统计该类的实例个数returncis.co
8、untdef_init_(selfname):self・name=namePerson.count=Person.count+1printPerson
此文档下载收益归作者所有