python(day032——面向对象5)

复习:

类:属性(数据)+行为(方法)

数据:将来要使用的

方法:管理数据,指定管理数据的规则

属性:实例变量(每个实例各自独立,self.XXX,且可以跨实例方法来使用)

          类变量(所有实例共享,都可以使用,类名.XXX,如果实例变量和类变量不重名,也可以使用self.XXX访问类变量)

行为:方法

          实例方法(第一个参数都是self,调用的时候self是不用传值的,编译器自己传值。管理每个事例中的数据)

          类方法(装饰器@classmethod,方法的第一个参数叫做cls(也可以是别的名字)。类方法里面不能使用实例变量,可以使用类变量和局部变量,调用的时候可以用类名.xxx()或者self.XXX()去调用静态方法)

          静态方法(装饰器@staticmethod,方法可以没有任何参数,也可以多个参数,不能有self和cls,调用的时候可以用类名.xxx()或者self.XXX()去调用静态方法)

          @property方法,将方法和实例变量的操作有所关联(优点:防止用户在类的外部直接修改实例变量,增加脏数据。使用@property相关方法可以设定修改数据的规则,防止脏数据)

继承:单继承和多继承

          class子类(基类)——》单继承

          class子类(基类1,基类2,基类3.。。。)——》多继承

          子类内部都要事先__init__的方法,在方法内也要调用父类的__init__的方法。多继承可能需要调用多个父类的__init__的方法景象实例化。

继承:默认获得所有基类的方法和公有的实例变量(私有的实例变量无法继承,只能通过基类的方法来获取私有变量值);可以在基类的基础上,增加新的方法和属性(实例变量和类变量);重写:在子类中重新写了一个和父类重名的方法,这样酒吧父类的方法进行了重写,实现了子类自己的个性化

__name__:类的名字

__str__:类的字符串表示

__repr__:类的标准字符串的表示

__module__:类所在的模块

__call__:把类的实例当做函数一样去调用

__getutem__、__setitem__、__delitem__:把实例实现为字典操作方法,可以使用key的方式访问实例变量

__doc__:类的文档字符串

__del__:类的实例从内存中删除时,调用此方法

__dict__:实例.__dict__,显示当前实例所有的实例变量和值;类名.__dict__,显示所有的类变量、内置方法和实例方法


1.jvm:占用内存,用来存放变量或者实例;python:占用内存,用来存放变量或者实例

生产了变量,生成了实例,肯定占有内存资源。如果你占有,不回收,最终内存就爆了,新的变量或者实例想增加使用内存,结果发现内存被占满,谁都不放手,编译器就不知道如何处理,java:outofmememory

python:只用不回收,也会出现内存爆了情况。

内存泄漏

2.装饰器:在代码运行期间在不改变原函数定义的基础上,动态给该函数增加功能的方式,称之为装饰器(Decorator)。

装饰器是一个很著名的设计模式,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。 总体来说,装饰器其实也是一个函数,一个用来包装函数的函数,返回一个修改之后的函数对象,将其重新赋值给原来的标识符,并永久丧失对原始函数对象的访问。

3.闭包:如果一个函数定义在另一个函数的作用域内,并且引用了外层函数的变量,则该函数称为闭包。 闭包是Python所支持的一种特性,它让在非global scope定义的函数可以引用其外围空间中的变量,这些外围空间中被引用的变量叫做这个函数的环境变量。环境变量和这个非全局函数一起构成了闭包。

#coding=utf-8

def outer(name) :
  def inner() :
    print (name)
  return inner

res1 = outer("python")
res2 = outer("java")
res1()
res2()

装饰器其实就是一个闭包,把一个函数当做参数后返回一个替代版函数。

装饰器的具体定义: 1、把要装饰的方法作为输入参数; 2、在函数体内可以进行任意的操作(可以想象其中会有很多应用场景); 3、只要确保最后返回一个可执行的函数即可(可以是原来的输入参数函数,也可以是一个新函数)。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值