python学习DAY10(属性方法)

class Test(object):
    def __init__(self,name):
        self.name=name
        self.__item=None
#--------------------------------------------------------
    @property            #属性方法
    def test(self):          #静态方法不需要传self参数
        pring("%sxxx%s"%(self.name,self.__item))
#--------------------------------------------------------
t=Test("lbc")
t.test()
#***
TypeError:'NoneType' object is not callable  #不能调用
#***
修改:
t.test   #属性方法:把一个方法变成一个静态属性,所以调用的时候不需要加括号

如果方法有参数则需要在属性方法下再添加一段代码:(方法名可以不需要一致,但建议与属性方法名一致)
    @test.setter
    def test(self,item):
        print("set to item:",item)
        self.__item=item           //设立私有变量的目的是把方法中的变量存储下来,方法中的变量是指传进方法中的变量
调用时赋值 
t.test="lbc"

#------
属性方法无法直接通过del删除,只能通过deleter中的函数再通过del删除相应的变量,deleter同setter一样的定义方法
#------

#-------------------------示例----------------------------
航班查询:使得用户只需得到自己的需求,而不需要了解详细的查询步骤
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 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)
        print("%s has changed to %s"%(self.flight_status,status))
    


f = Flight("CA980")
f.flight_status
#f.flight_status=2
#-------------------------------------------------------------
#完善版
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 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 = {
: "canceled",
:"arrived",
: "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 =  2 #触发@flight_status.setter 
del f.flight_status #触发@flight_status.deleter

此代码示例参考Alex博客!

posted @ 2019-08-16 10:41  LBC不认输  阅读(166)  评论(0编辑  收藏  举报