该【Python面向对象进阶教程,Python面向对象进阶知识笔记 】是由【风一样的男子】上传分享,文档一共【26】页,该文档可以免费在线阅读,需要了解更多关于【Python面向对象进阶教程,Python面向对象进阶知识笔记 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。类方法、静态方法
第一个形参是类对象的方法
需要用装饰器***@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数。
classDog(object):
__type="狗"
#类方法,用classmethod来进行修饰
***@classmethod
defget_type(cls):
print(())
使用场景:
当方法中 需要使用类对象 (如访问私有类属性等)时,定义类方法
类方法一般和类属性配合使用
需要通过装饰器***@staticmethod来进行修饰,静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)。
静态方法也能够通过 实例对象 和 类对象 去访问。
classDog(object):
type="狗"
def__init__(self):
name=None
#静态方法
***@staticmethod
defintroduce():#静态方法不会自动传递实例对象和类对象
print("犬科哺乳动物,属于食肉目..")
dog1=Dog()
()#可以用实例对象来调用静态方法
()#可以用类对象来调用静态方法
用场景:
当方法中 既不需要使用实例对象(如实例对象,实例属性),也不需要使用类对象 (如类属性、类方法、创建实例等)时,定义静态方法
取消不需要的参数传递,有利于 减少不必要的内存占用和性能消耗
注意点:
类中定义了同名的方法时,调用方法会执行最后定义的方法
classDog:
defdemo_method(self):
print("对象方法")
***@classmethod
defdemo_method(cls):
print("类方法")
***@staticmethod
defdemo_method():#被最后定义
print("静态方法")
dog1=Dog()
()#结果:静态方法
()#结果:静态方法
__new__和__init__方法
classA(object):
def__init__(self):
print("这是init方法")
def__new__(cls):
print("这是new方法")
(cls)
A()
总结
__new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类__new__出来的实例,或者直接是object的__new__出来的实例
__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
#实例化一个单例
classSingleton(object):
__instance=None
__is_first=True
def__new__(cls,age,name):
:
=(cls)
def__init__(self,age,name):
:#不会再创建第二个对象
=age
=name
=False
a=Singleton(18,"张三")
b=Singleton(28,"张三")
print(id(a))
print(id(b))
print()#18
print()#18
=19
print()
继承的基本使用
在现实生活中,继承一般指的是子女继承父辈的财产,父辈有的财产,子女能够直接使用。
程序里的继承
继承是面向对象软件设计中的一个概念,与多态、封装共为面向对象的三个基本特征。继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。
在程序中,继承描述的是多个类之间的所属关系。
如果一个类A里面的属性和方法可以复用,则可以通过继承的方式,传递到类B里。
那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。
classAnimal:
def__int__(self):
pass
"""动物类"""
defsleep(self):
print('正在睡觉')
classDog(Animal):
"""Dog类继承自Animal类"""
def__init__(self):
pass
classCat(Animal):#定义类时,在括号后面传入父类的类名,表示子类继承父类
"""Cat类继承自Animal类"""
def__int__(self):
pass
#Dog和Cat都继承自Animal类,可以直接使用Animal类里的sleep方法
dog=Dog()
()
cat=Cat()
()
在Python中,继承可以分为单继承、多继承和多层继承。
单继承:子类只继承一个父类
继承概念:子类用于父类的所有的方法和属性。
继承语法:
class类名(父类名):
pass
子类继承自父类,可以享受父类中已经封装好的方法,不需要再次定义
子类中应该根据职责,封装子类特有的属性和方法。
Python面向对象进阶教程,Python面向对象进阶知识笔记 来自淘豆网m.daumloan.com转载请标明出处.