python基础篇-多态和类方法

面向对象的三大特性:封装、继承、多态

多态:对于其它编程语言来说,多态依赖于继承,通过父类的引用访问子类的方法,实际上在定义的时候声明一个父类类型的对象,但是实际传入的是子类类型的对象,根据具体的子类类型,访问子类中重写的与父类同名的方法,从而对于同一个方法,根据传入的子类对象不同,而产生不同的行为。

在python中,不完全依赖于继承,不过大抵也是类似的,在调用的时候,具体看传入的对象是谁,从而调用具体对应的方法

 示例中,忘记写继承关系了,不过具体调用的时候还是依据传入的对象类型,调用具体的方法

58558532d90e2f2a2312804fee8296af

 

类属性:类公有,也被该类所实例化出来的所有对象共有;只占一块内存空间

实例属性:与self绑定,被 类实例化出来的对象持有 ;每实例化一个对象,就会为其实例属性单独开辟一块内存空间

访问:可以通过类或者实例对象访问。

修改:只能通过类修改,通过实例对象修改时,会默认为实例对象声明一个同名的实例属性,类属性的值不会发生改变

 

类方法:通过@classmethod 装饰器修饰,标识某一个方法为类方法,第一个参数必须为类对象,默认为cls;通常用于操作(私有)类属性

   

Python 3.13.5 (tags/v3.13.5:6cb20a2, Jun 11 2025, 16:15:46) [MSC v.1943 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> class Dog(object):
...     __tooth = 10
...
>>> class Dog(object):
...     __tooth = 10
...
>>> class Dog(object):
...     __tooth = 10
...     @classmethod
...     def print_tooth(cls):
...         return cls.__tooth
...
>>> wangcai =Dog()
>>> tooth = Dog.print_tooth()
>>> print(tooth)
10
>>>

 

静态方法:用@staticmethod装饰器修饰 既不需要传递类,也不需要传递实例,无形参self或cls,纯功能函数。可以减少不必要的内存占用和性能消耗

>>> class Math():
...     @staticmethod
...     def add(a,b):
...         return a+b
...
>>> x1 = 10
>>> x2 =5
>>> Math.add(x1,x2)
15
>>>

  

 

posted @ 2025-08-26 16:25  Wind_Swing_Dunn  阅读(11)  评论(0)    收藏  举报