类方法
类方法不能访问实例变量,只能是访问类变量
Why?因为self此刻传的不是实例变身,而是类本身
class Student(object):
type = 'people'
name = "圣代三段海鞘"
def __init__(self, name):
self.name = name
def eat(self):
print(self)
print("%s在吃东西!!!" % self.name)
print("-----------------------------------")
@classmethod
def again(cls):
print(cls)
print("%s又再吃东西了!!!" % cls.name)
s1 = Student("阿达")
s1.eat()
s1.again()
静态方法
不能访问类变量,也不能访问实例变量
静态方法隔断了方法和类以及实例之间的任何关系
class Student(object):
type = 'people'
name = "圣代三段海鞘"
def __init__(self, name):
self.name = name
def eat(self):
print(self)
print("%s在吃东西!!!" % self.name)
print("-----------------------------------")
@staticmethod
def again(self): # 这下连变量都不给赋值了
print("谁在吃东西!!!哦,原来是你啊%s!!!" % self.name)
s1 = Student("阿达")
s1.eat()
s1.again(s1) # 在静态方法阻碍变量赋值的情况下,需要我们手动去赋值
属性方法property
把一个方法变成一个静态的属性(方法)
# 模拟一下用户查询机票
class Flight(object):
def __init__(self, name):
self.name = name
def check_status(self):
print("连接航空公司内网数据库!!!")
print("检查%s航班目前的状态" % self.name)
return 0
@property # get
def flight_status(self):
status = self.check_status()
if status == 0:
print("该航班已经结束!!!")
elif status == 1:
print("该航班已经抵达目的地!!!")
elif status == 2:
print("该航班已经离开,请错过航班的旅客搭乘下一班,感谢您的配合!!!")
else:
print("无法确认您的航班信息,请稍后再查看信息!!!")
@flight_status.setter # set
def flight_status(self, status):
print(status)
@flight_status.deleter # del
def flight_status(self):
print("已经删除了!!!")
f1 = Flight("GB310")
f1.flight_status
f1.flight_status = 1 # 赋值
del f1.flight_status
print(f1.flight_status)