1.静态方法:
#!/usr/bin/env python# _*_ coding:utf-8 _*_# Author:CarsonLiclass Dog(object): def __init__(self,name): self.name=name """ 静态方法 只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性 """ @staticmethod def eat(aaa): print(aaa)d=Dog("小明")d.eat("asdfg")
运行结果:
asdfg
2.类方法:
#!/usr/bin/env python# _*_ coding:utf-8 _*_# Author:CarsonLi'''类方法 只能访问类变量,不能访问实例变量'''class Dog(object): ''' 类方法 只能访问类变量,不能访问实例变量 ''' addr = "深圳" def __init__(self,name): self.name=name @classmethod def eat(self,age): print(self.addr,age)d=Dog("小明")d.eat(25)
运行结果:
深圳 25
3.属性方法:
属性方法设置参数和删除参数的函数名可以和该参数名一样,也可以不一样
#!/usr/bin/env python# _*_ coding:utf-8 _*_# Author:CarsonLi"""属性方法 把一个方法变成一个静态属性"""class Car(object): def __init__(self,name,logo): self.name=name self.logo=logo """属性方法""" @property def drop(self): print("获取速度%s"%self.sudu) """为属性方法设置属性,相当于传值""" @drop.setter def setdrop(self,sudu): self.sudu=sudu print("设置速度%s"%self.sudu) """删除属性方法的自己的属性""" @drop.deleter def deldrop(self): del self.sudu """ 设置属性和删除属性的方法名和属性方法名一致 """ @property def color(self): print("%s的颜色为%s"%(self.name,self.colour)) @color.setter def color(self,colour): self.colour=colour print("设置%s的颜色为%s"%(self.name,self.colour)) @color.deleter def color(self): del self.colourbmw=Car("华晨马宝宝","BMW")#属性方法中属性的设置 触发@drop.setterbmw.setdrop="180" #运行结果:当前速度是180#属性方法的调用不用括号bmw.drop #运行结果:180千米每小时#触发 @drop.deleterdel bmw.deldropbmw.color="blue" #运行结果:设置华晨马宝宝的颜色为bluebmw.color #运行结果:华晨马宝宝的颜色为bluedel bmw.color