您的位置:首页 > 脚本大全 > > 正文

python的静态方法和类方法(深入解析python中的实例方法、类方法和静态方法)

更多 时间:2021-11-05 14:21:30 类别:脚本大全 浏览量:2576

python的静态方法和类方法

深入解析python中的实例方法、类方法和静态方法

1、实例方法/对象方法

实例方法或者叫对象方法,指的是我们在类中定义的普通方法。
只有实例化对象之后才可以使用的方法,该方法的第一个形参接收的一定是对象本身

python的静态方法和类方法(深入解析python中的实例方法、类方法和静态方法)

2、静态方法

(1).格式:在方法上面添加 @staticmethod
(2).参数:静态方法可以有参数也可以无参数
(3).应用场景:一般用于和类对象以及实例对象无关的代码。
(4).使用方式: 类名.类方法名(或者对象名.类方法名)。

定义一个静态方法

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • class Game:
  •  
  •   @staticmethod
  •   def menu():
  •     print('------')
  •     print('开始[1]')
  •     print('暂停[2]')
  •     print('退出[3]')
  •  
  •  
  • Game.menu()
  • 3、类方法

    无需实例化,可以通过类直接调用的方法,但是方法的第一个参数接收的一定是类本身
    (1).在方法上面添加@classmethod
    (2).方法的参数为 cls 也可以是其他名称,但是一般默认为cls
    (3).cls 指向 类对象
    (5).应用场景:当一个方法中只涉及到静态属性的时候可以使用类方法(类方法用来修改类属性)。
    (5).使用 可以是 对象名.类方法名。或者是 类名.类方法名

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • class Person:
  •   type = '人类'
  •  
  •   @classmethod
  •   def test(cls):
  •     print(cls.type)
  •  
  •  
  • Person.test()
  • 举例:使用类方法对商品进行统一打折

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • class Goods:
  •   __discount = 1
  •  
  •   def __init__(self, name, price):
  •     self.name = name
  •     self.price = price
  •  
  •   @classmethod
  •   def change_discount(cls, new_discount):
  •     cls.__discount = new_discount
  •  
  •   @property
  •   def finally_price(self):
  •     return self.price * self.__discount
  •  
  •  
  • banana = Goods('香蕉', 10)
  • apple = Goods('苹果', 16)
  • Goods.change_discount(0.8)
  • print(banana.finally_price)
  • print(apple.finally_price)
  •  
  • Goods.change_discount(0.5)
  • print(banana.finally_price)
  • print(apple.finally_price)
  • 输出为:

    8.0
    12.8
    5.0
    8.0

    以上所述是小编给大家介绍的python中的实例方法、类方法和静态方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!

    原文链接:https://blog.csdn.net/weixin_44251004/article/details/86499231#3_28

    您可能感兴趣