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
属性方法案例:
- 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 = {
- 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 = 2 # 触发@flight_status.setter
- del f.flight_status # 触发@flight_status.deleter
以上是关于day07-01-面向对象进阶的主要内容,如果未能解决你的问题,请参考以下文章