新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Python使用静态方法类似函数工具使用,一般尽量少用静态方法。
创新互联专业为企业提供瓜州网站建设、瓜州做网站、瓜州网站设计、瓜州网站制作等企业网站建设、网页设计与制作、瓜州企业网站模板建站服务,十余年瓜州做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的:
1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数;
2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量;
3)静态方法有点像函数工具库的作用,而类成员方法则更接近类似Java面向对象概念中的静态方法。
一、先是在语法上面的区别:
1、静态方法不需要传入self参数,类成员方法需要传入代表本类的cls参数;
2、静态方法是无妨访问实例变量和类变量的,类成员方法无法访问实例变量但是可以访问类变量
二、使用的区别:
由于静态方法无法访问类属性,实例属性,相当于一个相对独立的方法,跟类其实并没有什么关系。这样说来,静态方法就是在类的作用域里的函数而已。
python的类里用@staticmethod的是静态方法,@classmethod的是类方法,如下
class Person(object):
person_list = []
def __init__(self, name, age):
self.name = name
self.age = age
self.person_list.append(self)
@classmethod
def one_year_later(cls):
for p in cls.person_list:
p.age += 1
@staticmethod
def born_one_boby(name):
return Person(name, 0)
def __repr__(self):
return 'Person name:%s, age:%s' % (self.name, self.age)
if __name__ == '__main__':
petter = Person('Petter',23)
merry = Person('Merry',21)
print(petter) # Person name:Petter, age:23
print(merry) # Person name:Merry, age:21
Person.one_year_later()
print(petter) # Person name:Petter, age:24
print(merry) # Person name:Merry, age:22
baby = merry.born_one_boby('Tom')
print(Person.person_list) # [Person name:Petter, age:24, Person name:Merry, age:22, Person name:Tom, age:0]