当前位置:   article > 正文

python基础——静态方法、动态方法、继承、类的派生_python动态方法和静态方法

python动态方法和静态方法


一、静态方法

类中编写的函数方法在方法名上方使用@staticmethod可以生成类中的静态方法,静态方法调用必须要传入指定的参数才行,不论调用对象是类还是对象

该方法创建:

@staticmethod
def 函数名:
函数代码

class Porple:
    age = 18

    @staticmethod
    def pl3(nb):
        print("这是类和对象都可使用的静态方法,age=", nb)

man = Porple()
man.pl3(man.age)
man.pl3(Porple.age)
man.age = 20
man.pl3(man.age)
man.pl3(Porple.age)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述


二、动态方法

1.绑定给对象的动态方法

该动态方法会自动将对象作为第一个参数传给被调用的动态方法
该方法创建就是

def 函数名:
函数代码

class Porple:
    age = 18

    def pl1(self):
        print("这是绑定给对象的动态方法,age=",self.age)


man = Porple()
print(Porple.age)
print(man.age)
man.pl1()
man.age = 20
print(Porple.age)
print(man.age)
man.pl1()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

在这里插入图片描述

2.绑定给类的动态方法

该方法会将类作为第一个参数自动传给该动态方法
该方法创建就是

@classmethod
def 函数名:
函数代码

class Porple:
    age = 18

    @classmethod
    def pl2(self):
        print("这是绑定给类的动态方法,age=", self.age)


man = Porple()
print(Porple.age)
print(man.age)
man.pl2()
man.age = 20
print(Porple.age)
print(man.age)
man.pl2()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

二、继承

用于描述类与类之间的关系,继承可以让子类(派生类)获得父类(基类)的所有属性和函数,子类可以有更多的属性和函数,继承可以是代码冗余减少、代码复用性增强。

继承方式:

class 类名(继承的父类可以是多个):
类代码

1. 无继承

没有继承父类的类,变量和函数都是在类中寻找其名称空间然后调用

2. 单继承

只继承一个父类时,子类所调用的变量和函数首先在自己的类中寻找,然后才去父类中寻找

在这里插入图片描述

3.多继承

3.1 非菱形继承(对象的父类不为子类)

如果子类继承的多个父类都是基类就只会在父类中寻找,此时按照继承顺序寻找。
在这里插入图片描述

3.2 非菱形继承(对象的父类为子类)

继承多个父类时,如果子类没有寻找到,就会在父类中寻找,父类中没有时会去父类的父类寻找,直到第一个父类全部寻找结束,此时是按深度优先的规则寻找。
在这里插入图片描述

3.3 菱形继承

此时查找顺讯从左到右,父类为子类时,需要去父类的父类中寻找最后在最后一个父类中寻找,此时为广度优先。

在这里插入图片描述


三、类的派生

使用super可以拓展子类的内置属性,在父类的基础上获取新的属性。
派生使用形式:

def init(self):
super().init(父类实例化时需要的参数) 该语法针对于python3.X
super(父类, self).init(父类实例化时需要的参数) 该语法针对于python2.X
添加上新的属性

class Fa:
    def __init__(slef, n, b):
        slef.n = n
        slef.b = b


class Soon(Fa):
    def __init__(self, n1, b1, c1, v1):
        super(Fa, self).__init__(n1, b1)# 该语法针对于python2.X
        super().__init__(n1, b1)# 该语法针对于python3.X
        self.c = c1
        self.v = v1

ss = Soon(1, 2, 3, 4)
print(ss.n)
print(ss.b)
print(ss.c)
print(ss.v)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/115946
推荐阅读
相关标签
  

闽ICP备14008679号