python基础篇-多态和类方法
面向对象的三大特性:封装、继承、多态
多态:对于其它编程语言来说,多态依赖于继承,通过父类的引用访问子类的方法,实际上在定义的时候声明一个父类类型的对象,但是实际传入的是子类类型的对象,根据具体的子类类型,访问子类中重写的与父类同名的方法,从而对于同一个方法,根据传入的子类对象不同,而产生不同的行为。
在python中,不完全依赖于继承,不过大抵也是类似的,在调用的时候,具体看传入的对象是谁,从而调用具体对应的方法
示例中,忘记写继承关系了,不过具体调用的时候还是依据传入的对象类型,调用具体的方法

类属性:类公有,也被该类所实例化出来的所有对象共有;只占一块内存空间
实例属性:与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 >>>

浙公网安备 33010602011771号