1、类 属性 类的属性 - 数据属性 - 函数属性 obj.__dict__ 实例属性 - 数据属性 obj.__dict__ 所有的数据属性可以动态改变 2、方法 - 绑定方法 参数,必须定一个位置参数, 通常叫 self 类的实例调用时称为绑定方法 那个实例调用时 self 就是这个实例 - 类方法 首先需要使用 classmethod 装饰器装饰的函数 也必须有一个位置参数,通常 cls 调用 - 一般是使用 类.方法名 也可以使用 类的实例名.方法名 无论谁调用, cls都是一个类对象 - 静态方法 需要使用 staticmethod 装饰器 此时就是一个普通函数 调用 使用 - 类名.方法名 - 实例名.方法名 3、继承 class A(): pass class B(A): pass A 称为父类(超类) B 称为子类 ###================================================### 一:属性:   尽量把需要用户传入的属性作为实例属性,而把同类都一样的属性作为类属性。实例属性在每创造一个实例时都会初始化一遍,不同的实例的实例属性可能不同,不同实例的类属性都相同。从而减少内存。   1:实例属性:     最好在__init__(self,...)中初始化     内部调用时都需要加上self.     外部调用时用instancename.propertyname   2:类属性:     在__init__()外初始化     在内部用classname.类属性名调用     外部既可以用classname.类属性名又可以用instancename.类属性名来调用   3:私有属性:     1):单下划线_开头:只是告诉别人这是私有属性,外部依然可以访问更改     2):双下划线__开头:外部不可通过instancename.propertyname来访问或者更改       实际将其转化为了_classname__propertyname 二:方法   1:普通类方法:     def fun_name(self,...):       pass     外部用实例调用   2:静态方法:@staticmethod       不能访问实例属性!!! 参数不能传入self!!!       与类相关但是不依赖类与实例的方法!!   3:类方法:@classmethod       不能访问实例属性!!! 参数必须传入cls!!!       必须传入cls参数(即代表了此类对象-----区别------self代表实例对象),并且用此来调用类属性:cls.类属性名   *静态方法与类方法都可以通过类或者实例来调用。其两个的特点都是不能够调用实例属性