python基础:实例方法、静态方法和类方法

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

class Person:
    def func(self):
        print('hello')


person = Person()
person.func()

运行结果;

hello

在这里插入图片描述

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

class Dog:
    role ='狗'     # 静态属性
    def test(self):
        # 做一些逻辑操作
        pass

    @staticmethod    定义 test2为静态方法,在此方法体内只能通过类对象或者cls来调用静态属性即(cls.role  或者  Dog.role)
    def test2(cls):
        '''cls参数是类对象指向类对象本身也就是Dog'''
        print(cls.role)
        print(Dog.role)  # 直接使用类名也可以直接调用

# Dog是类名也是类对象
print(Dog.role)    类对象直接调用方法test2   # 二哈

# 类调用类方法
Dog.test2()       #类对象调用方法 test2  
# 实例对象调用类方法
dog=Dog()
dog.test2()      # 实例对象调用方法test2

运行结果:

二哈
二哈
二哈
二哈
二哈

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

练习1:使用类方法对商品进行打折扣

全场打八折

class Goods:
    __discount = 1  # 静态属性(类属性),实例对象都可以直接调用
    def __init__(self,name,price):
        self.name=name
        self.__price=price

    @property     #将方法变为属性
    def price(self):
        return self.__price*self.__discount

    @classmethod  #一个方法里面只有静态属性,可以将这个方法变为类方法
    def change_discount(cls,new_discount):
        cls.__discount=new_discount
# 苹果香蕉各打八折
# 苹果打八折
applex=Goods('苹果',10,)
applex.change_discount(0.8)  # 相当于重新在自己内部创建了
# 一个属性 apple.__discount=0.8,调用类里面的方法def price(self)时
# 用的self.__discount就是自己创建的apple.__discount=0.8,不再使用
# 类里面的静态属性,但是此种方法较为繁琐。
print(applex.price)   #8.0
#香蕉打七折
banana=Goods('进口香蕉',20)
banana.change_discount(0.8  )
print(banana.price)   #16.0


#全场八折
Goods.change_discount(0.8)  # 类对象调用类方法直接修改了静态属性的值,
# 其他实例对象在调用此静态队形的时候,就不用再进行专门的修改。
applex=Goods('苹果',10,)
print(applex.price)   #8.0
banana=Goods('进口香蕉',20)
print(banana.price)   #16.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值