python的静态方法

python是一门面向对象的语言,因此我们往往需要用到class,而在开头部分会写一个这样的特殊函数:

def __init__(self,name1,name2):
    pass
    

后面的方法也会在第一个参数写成self。但是有时候我们做一个比较大的项目时,往往会有很多参数,但是分布进行时,又不需要提供那么多参数,但是如果通过实例化调用类中的某个方法时,需要提供全部的参数,这时 对类的静态方法边出现了

我们可以在函数的上面放一个@staticmethod

class Car():

    def __init__(self, year):
        self.year = year
        
    def get_descriptive_name(self):
        long_name = str(self.year)
        return long_name.title()

    @staticmethod
    def add(num):
        num = num + 1
        print(num)


Car.add(2)    

注意:在调用add函数时,Car后面并没有(),因为Car()是实例化

但是在静态化方法里是无法调用实例化方法的,因为调用实例化方法(即第一个参数是self的),需要提供全部的参数,而我们使用静态方法往往是以内无法提供全部参数的

class Car():

    def __init__(self, year):
        self.year = year
        
    def get_descriptive_name(self):
        long_name = str(self.year)
        return long_name.title()

    def wd(self):
        print("你好")

    @staticmethod
    def add(num):
        self.wd()
        num = num + 1
        print(num)


Car.add(2)    

执行上述代码,会报错:

NameError: name 'self' is not defined

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值