1.静态方法:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author:CarsonLi
class 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.colour
bmw=Car("华晨马宝宝","BMW")
#属性方法中属性的设置 触发@drop.setter
bmw.setdrop="180" #运行结果:当前速度是180
#属性方法的调用不用括号
bmw.drop #运行结果:180千米每小时
#触发 @drop.deleter
del bmw.deldrop
bmw.color="blue" #运行结果:设置华晨马宝宝的颜色为blue
bmw.color #运行结果:华晨马宝宝的颜色为blue
del bmw.color