Python基础之类中的方法

一、类中方法的定义

1:实例方法:第一个参数必须是self,默认是绑定到对象的,归属于实例对象。

2:类方法:使用修饰符@classmethod定义,且第一个参数必须是cls,方法被绑定到了类,归属于类对象。

3:静态方法:使用修饰符@staticmethod定义,参数随意,没有self和cls,不和任何对象绑定,不属于任何对象。

class Func:
    def instance_func(self):
        print("这是实例方法")
        
    @classmethod
    def class_func(cls):
        print("这是类方法")
        
    @staticmethod
    def static_func():
        print("这是静态方法")
        
func = Func()
func.instance_func()   # 实例对象可以调用实例方法
func.class_func()      # 实例对象可以调用类方法
func.static_func()     # 实例对象可以调用静态方法

Func.instance_func()   # 报错,类对象不可以调用实例方法,实例方法只能由实例对象调用
Func.class_func()      # 类对象可以调用类方法
Func.static_func()     # 类对象可以调用静态方法

二、调用

实例方法:实例对象可以调用,会自动将实例对象当做第一个参数传给self,类不可以调用实例方法,调用后会报错。

类方法:实例对象和类都可以调用,类调用会自动将类对象当做第一个参数传给cls,实例对象调用的类方法,也是自动将类当做第一个参数传给cls。

静态方法:实例对象和类都可以调用,就是一个普通的函数,没有自动传值一说。无法访问类属性、实例属性,相当于一个独立的方法,跟类没啥关系,放在一个类的作用域里面的函数而已。

三、类方法的使用场景

类方法适用于方法中只涉及到类变量的方法。

class Car:
    max_speed = 100

    @classmethod
    def modify_speed(cls, speed):
        cls.max_speed = speed

    def __init__(self, brand, age):
        self.brand = brand
        self.age = age

    @staticmethod
    def print_message():
        # 语法错误,不可以在静态方法中使用实例属性和类属性
        print(f'这是{self.brand},车速是{cls.max_speed}')   
        print('这是辆汽车')

car1 = Car('宝马', 3)
car2 = Car('奥迪', 2)
print(car1.max_speed)    # 100
print(car2.max_speed)    # 100
Car.modify_speed(150)
print(car1.max_speed)    # 150
print(car2.max_speed)    # 150

总结三种方法的使用:若类中需要一个功能,该功能的实现代码中需要引用实例属性则将其定义成实例方法、需要引用类则将其定义成类方法、无需引用类或对象则将其定义成静态方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值