Python面向对象进阶教程,Python面向对象进阶知识笔记

Python面向对象进阶教程,Python面向对象进阶知识笔记

ID:22682964

大小:475.49 KB

页数:26页

发布时间:2023-10-18 19:39:01

资源描述:

类方法、静态方法1.类方法·第一个形参是类对象的方法·需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数。classDog(object):__type="狗"#类方法,用classmethod来进行修饰@classmethoddefget_type(cls):returncls.__typeprint(Dog.get_type())使用场景:·当方法中 需要使用类对象 (如访问私有类属性等)时,定义类方法·类方法一般和类属性配合使用

12.|静态方法·需要通过装饰器@staticmethod来进行修饰,静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)。·静态方法也能够通过 实例对象 和 类对象 去访问。classDog(object):type="狗"def__init__(self):name=None#静态方法@staticmethoddefintroduce():#静态方法不会自动传递实例对象和类对象print("犬科哺乳动物,属于食肉目..")dog1=Dog()Dog.introduce()#可以用实例对象来|调用静态方法dog1.introduce()#可以用类对象来调用静态方法用场景:

2·当方法中 既不需要使用实例对象(如实例对象,实例属性),也不需要使用类对象 (如类属性、类方法、创建实例等)时,定义静态方法·取消不需要的参数传递,有利于 减少不必要的内存占用和性能消耗注意点:·类中定义了同名的方法时,调用方法会执行最后定义的方法classDog:defdemo_method(self):print("对象方法")@classmethoddefdemo_method(cls):print("类方法")@s|taticmethoddefdemo_method():#被最后定义

3print("静态方法")dog1=Dog()Dog.demo_method()#结果:静态方法dog1.demo_method()#结果:静态方法__new__和__init__方法classA(object):def__init__(self):print("这是init方法")def__new__(cls):

4print("这是new方法")returnobject.__new__(cls)A()总结·__new__至少要有一个|参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供·__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例·__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值#实例化一个单例classSingleton(object):__instan|ce=None__is_first=Truedef__new__(cls,age,name):ifnotcls.__instance:

5cls.__instance=object.__new__(cls)returncls.__instancedef__init__(self,age,name):ifself.__is_first:#不会再创建第二个对象self.age=ageself.name=nameSingleton.__is_first=Falsea=Singleton(18,"张三")b=Sin|gleton(28,"张三")print(id(a))print(id(b))print(a.age)#18print(b.age)#18a.age=19print(b.age)

6继承的基本使用在现实生活中,继承一般指的是子女继承父辈的财产,父辈有的财产,子女能够直接使用。程序里的继承继承是面向对象软件设计中的一个概念,与多态、封装共为面向对象的三个基本特征。继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。·在程序中,继承描述的是多个类之间的所属关系。·如果一个类A里面的属性和方法可以|复用,则可以通过继承的方式,传递到类B里。

7·那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。classAnimal:def__int__(self):pass"""动物类"""defsleep(self):print('正在睡觉')classDog(Animal):"""Dog类继承自Animal类"""def__init__(self):passclassCat(Animal):#定义类时,在括号后面传入父类的类名,表示子类继承父类"""Cat类继承自Animal类"""def__int__|(self):pass

8#Dog和Cat都继承自Animal类,可以直接使用Animal类里的sleep方法dog=Dog()dog.sleep()cat=Cat()cat.sleep()

9在Python中,继承可以分为单继承、多继承和多层继承。单继承:子类只继承一个父类继承概念:子类用于父类的所有的方法和属性。继承语法:class类名(父类名):pass·子类继承自父类,可以享受父类中已经封装好的方法,不需要再次定义·子类中应该根据职责,封装子类特有的属性和方法。

10继承的传递性Dog类继承自Anim|al,XiaoTianQuan又继承自Dog类,那么XiaoTianQuan类就具有了Animal类里的所有属性和方法。子类拥有父类以及父类的父类中封装的所有属性和方法。思考:XiaoTianQuan能否调用Animal的run()方法?XiaoTianQUan能够调用Cat里的方法?多继承子类可以拥有多个父类,并且具有所有父类的属性和方法。语法格式:class子类名(父类名1,父类名2.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1、本文档共26页,下载后即可获取全部内容。
2、此文档《Python面向对象进阶教程,Python面向对象进阶知识笔记》由用户(158****5147)提供并上传付费之前 请先通过免费阅读内容等途径辨别内容,本站所有文档下载所得的收益全部归上传人(卖家)所有:如有侵权或不适当内容,请进行举报或申诉。
3、所有的PPT和DOC文档都被视为“模板”允许上传人保留音节日灵结构的情况下删减部份的内容,下裁前须认直查看,确认无误后再购买。
4、欧宝真人·(中国)科技有限公司网仅提供信息存储空间,仅对用户上传内容的表现方式做保护外理,无法对各卖家所售文档的直实性,完整性,准确性以及专业性等问题提供审核和保证,请谨慎购买。
5、本站文档的总页数,文档格式和文档大小以系统显示为准(内容中显示页数不一定正确),网站客服只以系统显示页数,文件格式,文档大小作为仲裁依据。

文档提供

发布者:158****5147

上传时间:2023-10-16 16:26:14

认证主体:齐**(个人认证)

IP归属:湖北省 武汉

相关标签

文档提供

发布者:158****5147

上传时间:2023-10-16 16:26:14

认证主体:齐**(个人认证)

IP归属:湖北省 武汉

相关标签