day07-01-面向对象进阶

Posted 雷大侠!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day07-01-面向对象进阶相关的知识,希望对你有一定的参考价值。

:属性(实例变量,类变量,私有属性__var)

       方法(构造方法,析构函数:默认就存在,写了就是重构了函数)

对象:封装(把一些功能实现细节不对外暴露)

           继承(代码重用,单继承,多继承:3.x均是广度优先)新式类class  foo(object)

    super(子类名,self).init(name.age.other)

           self.other = other       

           重构父类构造函数,可继承父类并添加子类新属性

多态:一个接口,多种实现

静态方法:(实际上跟类没神魔关系了,相当于单纯的函数,但必须通过类名或实例名调用,类似台湾和大中华的关系。故实例调用时需要传入实例对象)@staticmethod声明

类方法:@classmethod,只能访问类变量,不能访问实例变量

属性方法:属性特点赋值,函数方法处理作用。@property,把一个方法变成一个静态属性,调用时,d.eat()-->d.eat

对属性方法赋值,在实例化之前建立一个私有属性,再建立一个方法,用@eat.setter声明,接受下面实例对象的传值,赋给私有变量保存,再在另一个函数输出类的私有属性值,删除属性方法,需要再写一个方法用@eat.deleter声明:

@Property

def eat(self)

    print("%s"%(self.__food))

@eat.setter

def eat(self,food):

    print("set food",food)

    self.__food=food

@eat.deleter

def eat(self)

    del self.__food

    print("删除__food")

d=Dog("zlz")

d.eat = "包子"

d.eat

del d.eat

属性方法案例:

 

  1. class Flight(object):
  2. def __init__(self, name):
  3. self.flight_name = name
  4. def checking_status(self):
  5. print("checking flight %s status " % self.flight_name)
  6. return 1
  7. @property
  8. def flight_status(self):
  9. status = self.checking_status()
  10. if status == 0:
  11. print("flight got canceled...")
  12. elif status == 1:
  13. print("flight is arrived...")
  14. elif status == 2:
  15. print("flight has departured already...")
  16. else:
  17. print("cannot confirm the flight status...,please check later")
  18. @flight_status.setter # 修改
  19. def flight_status(self, status):
  20. status_dic = {
  21. 0: "canceled",
  22. 1: "arrived",
  23. 2: "departured"
  24. }
  25. print("\033[31;1mHas changed the flight status to \033[0m", status_dic.get(status))
  26. @flight_status.deleter # 删除
  27. def flight_status(self):
  28. print("status got removed...")
  29. f = Flight("CA980")
  30. f.flight_status
  31. f.flight_status = 2 # 触发@flight_status.setter
  32. del f.flight_status # 触发@flight_status.deleter

 

 

 

以上是关于day07-01-面向对象进阶的主要内容,如果未能解决你的问题,请参考以下文章

Python之路,Day8 - 面向对象编程进阶

Python之面向对象进阶------反射(Day26)

Python学习之路——Day8(面向对象进阶)

day07面向对象进阶

Python--day7--面向对象编程进阶

day28--面向对象进阶