总论:
是什么: 类:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。不能被直接操作,只有被实例化为对象时,才会变得可操作。类的实例称为对象; 属性:就是属于一个对象的数据或者函数,我们可以通过句点(.)来访问属性; 类实例:用类创建对象称为实例化; 类中函数称方法; 方法重载:是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。方法重载是让类以统一的方式处理不同类型数据的一种手段; 方法重写、方法覆盖:类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写; init_():称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法;能干什么: 主要是为了实现高效的编写; 可以编写表示现实事物和场景的类,并基于类创建实例; 类提供了一种组合数据和功能的方法;实现语法: 关键词class; init()的形参self必不可少,当调用时self自动传入(self代表类的实例,不需要实例传入),并与类相关的方法调用都自动传递self;约定: python约定类的创建名称首字母大写 class Cat(): #名称约定(非必须)首字母大写,括号中为父类(默认为object,后面会涉及)无可省去括号 def __init__(self, name, age): #此处一般为文档字符串 self.name = name #初始化属性 self.age = age def call(self): print(self.name + " saying miao") A_Cat =Cat("Black", 18) #实例化 A_Cat.call() #调用实例方法定义方法即实现
序号特殊方法/说明调用1_dict_/类的属性(包含一个字典,存储所有实例成员信息)如print(Cat._dict_)2_doc_ /打印类的描述信息,第一个没有赋值的字符串就是说明文档,一般在class的第二行写以下类似3_module_/表示当前操作的对象在那个模块4_class_/表示当前操作的对象的类是什么5_del_/当对象在内存中被释放时,自动触发执行6_call__/对象后面加括号,触发执行7_dict_/查看类或对象中的所有成员8_getitem_/获取(自动触发)9_setitem_/设置(自动触发)10_delitem_/删除数据,del自动触发属性操作: getattr(obj, name[, default]) : 访问对象的属性。 hasattr(obj,name) : 检查是否存在一个属性。 setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。 delattr(obj, name) : 删除属性。 _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
name 模块是对象,并且所有的模块都有一个内置属性 name。一个模块的 name 的值取决于您如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, name 的值将是一个特别缺省"main"。 name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main,通过if判断这样就可以执行“mian:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“mian:”后面的内容。
私有变量 __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。
私有方法: 在模块中用__funcname(两个下划线)定义的函数,可在dir(classname)不能用正常方式获取(只是用于说明此方法为私有方法),但可以用"实例._classname__funcname()调用方法。