多态:
  意味着允许不同类的对象对同一消息做出不同的响应。

  条件: 满足继承关系。需要方法重写。

构造函数:
  def_init_(self,....):
    self.name = name

    pass

析构函数:

  def_del_(self):

    pass

 每个函数都有一个属性值self

类的特殊方法:(合适的方法必须写在合适的类中)
  _doc_:文档信息

  _module_:模块信息

  tag:自定义类属性

  catch:自定义类方法

私有变量:

  在python里面两个下划线开头的就是私有变量(无法访问也无法操作)

判断对象是否为类的实例:
  isinstance(对象,类)

类的继承:
  super(类,self).父类方法

class Animal (object):
tag = "动物"
def eat(self):
print("ALL the animal need to eat something for living!")

class Cat(Animal):
tag = "猫科动物"
def __init__(self,name,age):
self.name = name
self.age = age

def eat(self):
super(Cat,self).eat()
print("also do the cats")

def catch(self):
print("catch mice")

if __name__ == '__main__':
cat = Cat("jj","8")
print(cat.name) cat.eat()

类的多重继承:
  class C(A,B):
    pass
类的高级特性:

  @property:将类的方法当做属性来使用

  @__slots__:1.为指定的类设置一个静态属性列表  2.为属性很少的类节约内存空间

    例:__slots__ = (name,age) <—里面是一个tuple  意思是限制了一个类里面只能拥有两个属性

    子类继承父类也会继承__slots__属性,但若想要子类可以添加新的属性,则可以在子类__slots__属性中将要添加的属性加入即可

  类的静态方法和实例方法:
    @staticmethod:表示静态方法,不用实例化就能实现。函数参数去掉self属性,self属性表示实例化对象本身

    @classmethod:表示类方法,参数传递为cls表示类(和设计模式有关)

 

内存管理:
  id():查看内存地址

  == —> 比较数值  is —> 比较内存和数值

垃圾回收机制:
  以引用计数为主,分代收集为辅。

  如果一个对象的引用数为0,python虚拟机就会回收这个对象的内存

  引用计数的缺陷是循环引用的问题,互相引用内存的得不到释放

引用计数:
  每个对象都存有指向该对象的引用总数

  查看某个对象的引用计数:sys.getrefcount()

  可以使用del关键字删除某个引用

Posted on 2020-06-27 12:04  Schrodinger'sdoris  阅读(189)  评论(0编辑  收藏  举报