面向对象的属性,类方法.静态变量

属性:                将一个方法  伪装成一个 属性,在代码的级别上没有本质的提升,但是让其看起来跟合理.

       用途:                类似一些需要经过计算的方法,为了看起来更合乎逻辑,将类中的一些方法伪装成对象的属性  如:   bmi(健康指数)    area(面积)   Perimeter(周长)  等 

       方法:                 在需要伪装的函数名的上一行加上装饰器函数,   如果需要修改,删除这个属性,,则需要分别定义,并用装饰器进行装饰

            

类的方法:    通过类名调用的方法,类方法中第一个参数约定俗称cls,python自动将类名(类空间)传给cls.

class A:
      def func(self): # 普通方法                                   =====>   a1 = A() #实例化一个对象
            print(self)                                                                      a1.func()   # 用对象正常调用           A.func(a1)  #通过类正常调用

      @classmethod # 类方法                                   ======>    a1 = A()   #实例化一个对象
      def func1(cls):                                                                      a1.func1()  #  用对象调用类方法.cls得到得是类本身                A.func1()  通过类调用类方法,自动将类空间传给cls

            print(cls)                                                    =====>通过子类或者子类实例化的对象.调用类方法,会自动将类名,或者对象的空间传给cls

类方法的三种应用场景:(1)类中 有些方法是不需要对象参与.
(2)对类中的静态变量进行改变,要用类方法
(3)继承中父类得到子类的类空间

class A:
    age = 12
    @classmethod             #注意      无论是类或者实例化的对象调用类方法,都会将调用者的所属本类空间传值给cls,这样在父类中就可以修改cls中的内容,注意,实例化的属性内容无法修改
            def func1(cls): # 此方法无需对象参与
                   print(cls)
                                        #对B类的所有的内容可以进行修改.
                   print(cls.age)
                   # return cls.name + str(cls.count + 1)

class B(A):
     age = 22
B.func1()

05 静态方法
@staticmethod        =======>一般放在函数名上变边,归纳统一函数,使得函数更清晰
# 1,代码块.清晰.
# 2,复用性.





































































                        

原文地址:https://www.cnblogs.com/laogao123/p/9378353.html