静态方法,类方法,属性方法,属性方法实例

#静态方法用的少,相当于类的工具包,访问不了类或实例中的任何属性
class Dog(object):
   
def __init__(self,name):
       
self.name=name


   
@staticmethod#实际上跟类没关系了,就只是一个函数了,名义上归类管
   
def eat(self):
       
print("%s is eating %s"%(self.name,'dd'))

   
def talk(self):
       
print("%s is talking"%self.name)
d=Dog(
"chenronghua")
d.eat(d)
#把自己传到eat函数,使self有效
d.talk()

 

#类方法基本用不到
class Dog(object):
    name=
"huazai"
   
def __init__(self,name):
       
self.name=name
       
self.n=2222

   
@classmethod #类方法只能访问类变量,不能访问实例变量
   
def eat(self):
       
print("%s is eating %s"%(self.name,'dd'))

   
def talk(self):
       
print("%s is talking"%self.name)

d=Dog(
"chenronghua")
d.eat()
d.talk()

#属性方法

class Dog(object):
   
def __init__(self,name):
       
self.name=name
       
self.__food=None


   
@property #把一个方法变成静态属性(变量)
   
def eat(self):
       
print("%s is eating %s"%(self.name,self.__food))
    @
eat.setter
   
def eat(self,food):
       
print("set to food:",food)
       
self.__food=food
    @
eat.deleter #删除属性方法
   
def eat(self):
        
del self.__food
       
print("删完了")

   
def talk(self):
       
print("%s is talking"%self.name)
d=Dog(
"chenronghua")
d.eat
#属性方法调用,不需要括号
d.eat="baozi"
d.eat

del d.eat #删除属性方法

#属性方法实例

class Flight(object):
   
def __init__(self, name):
       
self.flight_name = name

   
def checking_status(self):
       
print("checking flight %s status " % self.flight_name)
       
return 2

   
@property
   
def flight_status(self):
        status =
self.checking_status()
       
if status == 0:
           
print("flight got canceled...")
       
elif status == 1:
           
print("flight is arrived...")
       
elif status == 2:
           
print("flight has departured already...")
       
else:
           
print("cannot confirm the flight status...,please check later")

    @
flight_status.setter  # 修改
   
def flight_status(self, status):
        status_dic = {
           
0: "canceled",
           
1: "arrived",
           
2: "departured"
       
}
       
print("\033[31;1mHas changed the flight status to \033[0m", status_dic.get(status))

    @
flight_status.deleter  # 删除
   
def flight_status(self):
       
print("status got removed...")


f = Flight(
"CA980")
f.flight_status
f.flight_status =
# 触发@flight_status.setter
#del f.flight_status  #
触发@flight_status.deleter

猜你喜欢

转载自blog.51cto.com/13707996/2330679
今日推荐