在使用静态方法时,类中的self将不会再进行传值,此时,静态方法已经和类没什么关系了。

普通方法:直接调用类下面的方法

成员方法和静态方法_python静态方法使用场景_python静态方法

静态方法:引入了@staticmethod

python静态方法_python静态方法使用场景_成员方法和静态方法

当eat函数变为静态方法时python静态方法,此时静态方法将eat函数与类dog之间的关联截断,之前调用类下面的方法会自动传self,如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用。

当使用了静态方法后,该函数下无法在调用类的变量和实例的变量。

静态方法名义上归类管理,实际中在静态方法中无法访问类和实例中的任何属性。

python类方法

类方法:引入了@classmethod

python静态方法_成员方法和静态方法_python静态方法使用场景

类方法只能访问类变量,不能访问实例变量。

访问实例变量会报错:如下

python静态方法_python静态方法使用场景_成员方法和静态方法

报错信息:AttributeError: type object ‘dog’ has no attribute ‘name’

python属性方法

属性方法是把一个方法变为静态属性,调用是不能有()。否则会报错。

python静态方法使用场景_成员方法和静态方法_python静态方法

怎么给该属性传值呢?在属性方法下新建一个函数,@eat.setter的方式。

成员方法和静态方法_python静态方法_python静态方法使用场景

属性方法无法通过del方式删除:

可通过如下方法删除:

python静态方法使用场景_python静态方法_成员方法和静态方法

总结

静态方法和类方法都需要使用修饰器python静态方法,分别使用的是staticmethod和classmethod。属性方法的使用修饰器为property。

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688