1、静态方法
只是名义上的归类管理, 实际上在静态方法访问不了类或实例中的任何属性
2、类方法:
类方法只能访问类变量,不能访问实例变量
3、属性方法:
把一个方法变成一个静态属性
4、静态方法实例:
# Author : XueFeng
class Dog(object):
'''
这个类是描述狗的
'''
n = 333
def __init__(self, name):
self.name = name
self.__food = None
# @staticmethod
# @classmethod
@property
def eat(self):
print("%s is eating %s" % (self.n, self.__food))
@eat.setter
def eat(self, food):
print("set eat:", food)
self.__food = food
@eat.deleter
def eat(self):
del self.__food
print("Have deleted...")
def talk(self):
print("%s is talking" % self.name)
print(Dog.__doc__)
d = Dog("Tom")
d.eat
d.eat = "baozi"
d.eat
del d.eat
# d.eat
d.talk()
5、属性方法之案例一
# Author : XueFeng
class Dog(object):
'''
这个类是描述狗的
'''
n = 333
def __init__(self, name):
self.name = name
self.__food = None
# @staticmethod
# @classmethod
@property
def eat(self):
print("%s is eating %s" % (self.n, self.__food))
@eat.setter
def eat(self, food):
print("set eat:", food)
self.__food = food
@eat.deleter
def eat(self):
del self.__food
print("Have deleted...")
def talk(self):
print("%s is talking" % self.name)
def __call__(self, *args, **kwargs):
print("Running call", args, kwargs)
def __str__(self):
return "hello"
# Dog("jim")()
jim = Dog("Jim")
# jim()
print(jim.__dict__) # 输出所有的实例属性
print(Dog.__dict__) # 输出所有的类属性,方法
# 如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值
# 打印类的描述信息
# print(Dog.__doc__)
# d = Dog("Tom")
# d.eat
# d.eat = "baozi"
# d.eat
# del d.eat
# # d.eat
#
# d.talk()
6、属性方法之案例二
# Author : XueFeng
class Flight(object):
def __init__(self, name):
self.flight_name = name
def checking_status(self):
print("Checking flight %s status" % self.flight_name)
return 1
@property
def flight_status(self):
status = self.checking_status()
if status == 0:
print("Flight got conceled...")
elif status == 1:
print("Flight is arrived...")
elif status == 2:
print("Flight has departured already...")
else:
print("Cannot confirm the flight status...")
@flight_status.setter
def flight_status(self,status):
print("flight %s has changed status to %s " % (self.flight_name, status))
f = Flight("CA980")
f.flight_status
f.flight_status = 2