• 面向对象_classmethod_staticmethod


    classmethod:类方法

    主要用于改变静态属性

    class Fruit_price:
        __discount= 1
        def __init__(self,original_price):
            self.__original_price=original_price
        @property
        def price(self):
            return  self.__original_price * self.__discount
        @classmethod
        def set_discount(cls,new_discount):
            cls.__discount=new_discount
    banana=Fruit_price(5)
    orange=Fruit_price(6)
    print(orange.price)
    print(banana.price)
    Fruit_price.set_discount(0.5)
    print(Fruit_price._Fruit_price__discount)
    print(banana.price)
    print(orange.price)
    '''输出结果6
    5
    0.5
    2.5
    3.0
    '''

    注意:当改变静态属性是一定类名.方法,否则不会生效。用对象名.方法时什么影响也不会产生。

    另外,在定义方法时,cls相当与是一个类名,在定义时,一定是用cls.静态变量 来重新赋值

    staticmethon:静态方法

    static  adj:静态的  n:静电

    staticmethod 静态方法

    class method:
        d=10
        def __init__(self,num1,num2):
            self.num1=num1
            self.num2=num2
        @staticmethod
        def input1(a,b):
            c= a+b
            return c
        def sum(self):
            print(self.num1+self.num2)
            return ''
    know=method(2,3)
    method.input1(3,4)
    print(method.__dict__)
    print(know.sum())
    #输出结果

    #{'d': 10, '__dict__': <attribute '__dict__' of 'method' objects>, 'sum': <function method.sum at 0x00000000010926A8>, '__weakref__': <attribute '__weakref__' of 'method' objects>, '__doc__': None, '__module__': '__main__', '__init__': <function method.__init__ at 0x0000000001092510>, 'input1': <staticmethod object at 0x00000000010945F8>}
    #5

    在类中,@staticmethod时,此方法变独立出去,属于一个单独的定义,与类和对象没有什么关系,在类.__init__中并有找到关于c的任何信息,只有关于input1函数的一个内存地址

    关于staticmethon,classmethon方法

    两个方法的调用都是关于 类名.方法名来调用的

    staticmethod 没有默认参数

    classmethod有一个相当于类名的参数cls

  • 相关阅读:
    http-server -S 开启 https 服务
    material-ui react的ui框架 有时间可以看看 chia用的前台ui
    关于vue.js:iview-Bug-5114在iview的Poptip气泡提示内调用DatePicker出现遮挡或同时关闭窗口等冲突问题[转]
    coding 的pages 静态要六分钱一个月,我也是醉了。
    jeesite 有时间看看
    选择单词后 按 ctrl + space 单词发音
    什么是CI/CD
    PostCSS深入学习: PostCSS和Sass、Stylus或LESS一起使用
    浅析requestAnimationFrame
    webpack性能优化
  • 原文地址:https://www.cnblogs.com/accolade/p/10513437.html
Copyright © 2020-2023  润新知