面向对象
类:一个模型,一个图纸。
对象:根据模型做出来的东西就是实例。
实例:实例和对象是一回事。
实例化:就是根据模型做具体东西的过程。
self:本类对象。
继承:
私有方法、私有变量不会被继承
1、如果要在父类方法的基础上重写扩展功能,super().xxx调用父类,然后把
对应的参数,传入即可
super会自动找到父类
抽象类:一个规范
封装:
静态方法:只是写在类里面的一个方法,不能使用类变量,调用不了其他的类方法 @staticmethod
实例方法:必须要实例化之后才能使用的函数。
实例变量:类的属性就是变量,必须要实例化之后才能使用的变量
类变量:在类里面直接定义的变量
类方法:不用实例化,通过类名就可以直接调用的方法,用实例也可以调用 @classmethod
属性方法:看起来像变量的一个函数 @property
构造函数:类在实例化的时候自动调用的方法 def __init__(self):
析构函数:实例被销毁的时候自动调用的方法 def __del__(self) :
私有方法:只能在类里面调用,出了类就不行了 def __close(self): #私有方法,出了类就使用不了
私有变量:只能在里面用,出了类就不行了
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #抽象类 2 3 import abc #abc是python内置模块 4 #这是一个抽象类,只是用来继承的 5 class BaseCar(metaclass=abc.ABCMeta): 6 def __init__(self,uid): 7 self.uid=uid 8 9 @abc.abstractclassmethod #此装饰器装饰后变成抽象类 10 def run(self): 11 pass 12 13 # class Bmw(BaseCar): 14 # pass 15 16 # #TypeError: Can't instantiate abstract class Bmw with abstract methods run 17 # m=Bmw('uid') 18 # m.run() 19 20 class Bmw(BaseCar): #继承此类必须实现run方法 21 def run(self): 22 print('run') 23 24 m=Bmw('uid') 25 m.run()