ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:24.20KB ,
资源ID:15008681      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/15008681.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(python 面向对象学习总结Word文件下载.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

python 面向对象学习总结Word文件下载.docx

1、 类属性(classattribute):属于一个类中所有对象的属性,不会只在某个实例上发生变化 类方法(classmethod):那些无须特定的对性实例就能够工作的从属于类的函数。中的类与对象Python中定义类的方式比较简单:class类名: 类变量 def _init_(self,paramers):def函数(self,.)其中直接定义在类体中的变量叫类变量,而在类的方法中定义的变量叫实例变量。类的属性包括成员变量和方法,其中方法的定义和普通函数的定义非常类似,但方法必须以self作为第一个参数。举例:class MyFirstTestClass: classSpec=it is a

2、test class def _init_(self,word): print say +word def hello(self,name):hello +name在Python类中定义的方法通常有三种:实例方法,类方法以及静态方法。这三者之间的区别是实例方法一般都以self作为第一个参数,必须和具体的对象实例进行绑定才能访问,而类方法以cls作为第一个参数,cls表示类本身,定义时使用classmethod;而静态方法不需要默认的任何参数,跟一般的普通函数类似.定义的时候使用staticmethod。class MethodTest():count= 0def addCount(self):

3、+=1print I am an instance method,my count is + str, selfstaticmethoddefstaticMethodAdd():printI am a static methond,my count is+strclassmethoddefclassMethodAdd(cls):I am a class method,my count is+str,clsa=MethodTest()()I am an instance method,my count is 1 () ;#I am a static methond,my count is2#I

4、am a static methond,my count is3#I am a class method,my count is4 #I am a class method,my count is5 Traceback(most recent call last):File, line 1, in TypeError:unbound method addCount() must be called with MethodTest instance asfirst argument (got nothing instead) 从上面的例子来看,静态方法和类方法基本上区别不大,特别是有Java编程

5、基础的人会简单的认为静态方法和类方法就是一回事,可是在Python中事实是这样的吗看下面的例子:class subMethodTest(MethodTest): passb=subMethodTest()#I am a static methond,my count is6#I am a class method,my count is7 #Iam a class method,my count is8 如果父类中定义有静态方法a(),在子类中没有覆盖该方法的话,()仍然指的是父类的a()方法。而如果a()是类方法的情况下,()指向的是子类。staticmethod只适用于不想定义全局函数的情

6、况。看看两者的具体定义:staticmethod function is nothing morethan a function defined inside a class. It is callable withoutinstantiating the class first. Its definition is immutable viainheritance.classmethod function also callablewithout instantiating the class, but its definition follows Subclass, not Parent

7、class, via inheritance. Thats because the firstargument for classmethod function must always be cls (class). 封装和访问控制 与Java不同,Python的访问控制相对简单,没有public,private,protected等属性,python认为用户在访问对象的属性的时候是明确自己在做什么的,因此认为私有数据不是必须的,但是如果你必须实现数据隐藏,也是可以的,具体方法就是在变量名前加双下划线。如_privatedata=0,定义私有方法则是在方法名称前加上_下划线。但即使对于隐藏的数

8、据,也是有一定的方法可以访问的。方法就是_className_attrName。Python对于私有变量会进行Namemangling是Python中为了方便定义私有的变量和方法,防止和继承类以及其他外部的变量或者方法冲突而采取的一种机制。在python中通过_spam定义的私有变量为最终被翻译成_classname_spam,其中classname为类名,当类名是以_开头的时候则不会发生Namemangling。Namemangling存在的一个问题是当字符串长度超过255的时候则会发生截断。class PrivateTest: _myownedata=12 def _myownmethod

9、(self): printcan you see me def sayhi(self):say hiclass subPrivateTest(PrivateTest):AttributeError:class subPrivateTest has no attribute _myownedata 构造函数和析构函数Python的构造函数有两种,_init_和_new_,_init_的调用不会返回任何值,在继承关系中,为了保证父类实例正确的初始化,最好显示的调用父类的_init_方法。与_init_不同,_new_实际是个类方法,以cls作为第一个参数。如果类中同时定义了_init_和_new_

10、方法,则在创建对象的时候会优先使用_new_.class A(object): def _init_(self): print(in init) def _new_(self):in newA()如果_new_需要返回对象,则会默认调用_init_方法。利用new创建一个类的对象的最常用的方法为:super(currentclass,cls)._new_(cls, .) def _new_(cls): Object = super(A,cls)._new_(cls)in New return Objectclass B(A):in Bs initB()_new_构造函数会可变类的定制的时候非常

11、有用,后面的小节中会体现。Python由于具有垃圾回收机制,通常不需要用户显示的去调用析构函数,即使调用,实例也不会立即释放,而是到该实例对象所有的引用都被清除掉后才会执行。class P: def _del_(self):deletedclass S(P): printinitialized (self)child deleteda=S() #initializedb=ac=aid(a),id(b),id(c) #(, )del adel bdel c #deleted #childdeleted 绑定与非绑定在前面的例子中我们讨论过类的实例方法必须通过实例调用,如果直接通过类去访问会抛出异

12、常,这种通过实例来访问方法就叫绑定,调用的时候不需要显示传入self参数,而调用非绑定方法需要显示传入self参数,比如当子类继承父类定义构造函数的时候,需要显示调用父类的构造函数,但此时该方法并未与任何实例绑定,调用的时候需要使用(self)。静态方法可以直接被类或类实例调用。它没有常规方法那样的特殊行为(绑定、非绑定、默认的第一个参数规则等等)。完全可以将静态方法当成一个用属性引用方式调用的普通函数来看待。任何时候定义静态方法都不是必须的(静态方法能实现的功能都可以通过定义一个普通函数来实现)3. Python中的继承 继承Python同时支持单继承与多继承,继承的基本语法为class新类名(父类1,父类2,.),当只有一个父类时为单继承,当存在多个父类时为多继承。子类会继承父类的所有的属性和方法,子类也可以覆盖父类同名的变量和方法。在传统类中,如果子类和父类中同名的方法或者属性,在查找的时候基本遵循自左到右,深度优先的原则。如下列:class A:defsayhi(self):printI am A hiclass B:I am B Hiclass C(A,B):passd=C()Iam A hi(d)Iam B Hi如果想调用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1