1.类也称为“类对象”,类的实例也称为“实例对象”。

定义类的语法格式如下:
class    类名:
            类体

要点如下:
1.类名必须符合“标识符”的规则;一般规定,首字母大写,多个单词使用“驼峰原则”。
2.类体中我们可以定义属性和方法(函数)
3.属性用来描述数据,方法(即函数)用来描述这些数据相关的操作方法代码是共享的,属性数据不共享”.

当解释器执行 class 语句时,就会创建一个类对象。
可以用pass,pass表示空语句。就是表示什么都不做,只是作为一个占位符存在。当你写代码时, 遇到暂时不知道往方法或者类中加入什么时,可以先用 pass 占位,后期再补上。

 Python 对象包含三个部分:id(identity 识别码、type、value(对象的值)。
一个 Python 对象包含如下部分:
1.id(identity 识别码)
2.type(对象类型)
3.value(对象的值)
          (1)属性(attribute)
          (2)方法(method)

2.构造方法
用于执行“实例对象的初始化工作”,即对象创建后,初始化当前对象的相关属性,无返回值。

    init ()的要点如下:
1.固定名称,必须为: __init__(),初始化创建好的对象,初始化指的是:“给实例属性赋值”
2.第一个参数固定,必须为:self。    self 指就是刚刚的创建好的实例对象。
3.构造函数通常用来初始化实例对象的实例属性,如下代码就是初始化实例属性:name     和 score。
4.通过“类名(参数列表)”来调用构造函数。调用后,将创建好的对象返回给相应的变量。比如:s1 = Student('张三', 80).   
6.__new__()方法: 用于创建对象,但我们一般无需重定义该方法。
7.如果我们不定义  init  方法,系统会提供一个默认的  init   方法。

3.实例属性
实例属性是从属于实例对象的属性,也称为“实例变量”。他的使用有如下几个要点:
1.实例属性一般在 init ()方法中通过如下代码定义:
self.实例属性名 = 初始值
2.在本类的其他实例方法中,也是通过 self 进行访问:
self.实例属性名

3.创建实例对象后,通过实例对象访问
obj01 = 类 名()    #创建对象,调用 init ()初始化属性
obj01.实例属性名 = 值    #可以给已有属性赋值,也可以新加属性

4.实例方法

实例方法是从属于实例对象的方法。实例方法的定义格式如下:
def    方法名(self [, 形参列表]):
         函数体

方法的调用格式如下:
对象.方法名([实参列表])
要点:
1.定义实例方法时,第一个参数必须为 self。和前面一样,self 指当前的实例对象。
2.调用实例方法时,不需要也不能给 self 传参。self 由解释器自动传参。

· 函数和方法的区别
1.都是用来完成一个功能的语句块,本质一样。
2.方法调用时,通过对象来调用。方法从属于特定实例对象,普通函数没有这个特点。
3.直观上看,方法定义时需要传递 self,函数不需要。

5.类属性

类属性是从属于“类对象”的属性,也称为“类变量”。由于,类属性从属于类对象,可以被所有实例对象共享。
类属性的定义方式:
class    类名:
类变量名= 初始值
在类中或者类的外面,通过:“类名.类变量名”来读写。

class Test_01:
    name = 'cora'   #类属性
    age = 18          #类属性
    def __init__(self,a,b):
        self.a = a            #实例属性
        self.b = b
        Test_01.age = Test_01.age+1    #函数内部调用类属性
    def test(self):        #实例方法
        print(self.a,self.b)
        print(Test_01.name)    #实例方法内部使用类属性

c = Test_01(3,4)
d = Test_01(5,6)
c.test()
print('{0}'.format(Test_01.age))

6.类方法

类方法是从属于“类对象”的方法。类方法通过装饰器@classmethod 来定义,

格式如下:

@classmethod
def        类方法名(cls    [,形参列表]) :

            函数体
要点如下:
1.调用类方法格式:“类名.类方法名(参数列表)”。  参数列表中,不需要也不能给 cls 传值@classmethod 必须位于方法上面一行

2.第一个 cls 必须有;cls 指的就是“类对象”本身;
3.类方法中访问实例属性和实例方法会导致错误
4.子类继承父类方法时,传入 cls 是子类对象,而非父类对象

7.静态方法

Python 中允许定义与“类对象”无关的方法,称为“静态方法”。

“静态方法”和在模块中定义普通函数没有区别,只不过“静态方法”放到了“类的名字空间里面”,需要通过“类调用”。

静态方法通过装饰器@staticmethod 来定义,

格式如下:

@staticmethod
def        静态方法名([形参列表]) :

            函数体
要点如下:
1.@staticmethod 必须位于方法上面一行
2.调用静态方法格式:“类名.静态方法名(参数列表)”。
3.静态方法中访问实例属性和实例方法会导致错误