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