美文网首页Python语言
23:python中的类变量、实例变量、类方法、静态方法和实例方

23:python中的类变量、实例变量、类方法、静态方法和实例方

作者: 寻水的_鱼 | 来源:发表于2018-08-02 22:30 被阅读22次

    1、类变量和实例变量

    • 类变量:定义在类里面,实例方法方法外面的变量
    • 实例变量:定义在实例方法里面的变量,常用:self.变量赋值
    #例:
    class Person:
        max_age = 150        #类变量/属性
        def __init__(self,age):
            self.age = age      #实例变量/属性
    
    • 相同点:对象可以通过 对象名.属性名 调用对象属性和类属性
    • 不同点:而类也可以通过 类名.属性名 调用类的属性,但是不能通过这种方式调用对象的属性
    • 注意事项:对象不能修改类属性,如果通过对象.类属性修改值,则是给对象添加属性

    2、类方法、静态方法和实例方法

    • 类方法:
      定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
      调用:实例对象和类对象都可以调用。
      使用场景:使用装饰器@classmethod。
      原则上,类方法是将类本身作为对象进行操作的方法。假设有个方法,且这个方法在逻辑上采用类本身作为对象来调用更合理,那么这个方法就可以定义为类方法。另外,如果需要继承,也可以定义为类方法。

    • 静态方法:
      定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;
      调用:实例对象和类对象都可以调用。
      使用场景:使用装饰器@staticmethod。
      静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性的代码,逻辑上属于类,但是和类本身没有关系,也就是说在静态方法中,不会涉及到类中的属性和方法的操作。可以理解为,静态方法是个独立的、单纯的函数,它仅仅托管于某个类的名称空间中,便于使用和维护。

    • 实例方法:
      定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法)
      调用:只能由实例对象调用。
      使用场景:简而言之,实例方法就是类的实例能够使用的方法。这里不做过多解释。

    相关文章

      网友评论

        本文标题:23:python中的类变量、实例变量、类方法、静态方法和实例方

        本文链接:https://www.haomeiwen.com/subject/pjosvftx.html