类
类的创建:
创建类的语法:
class Student: #Student为类的名称(类名)由一个或多个单词组成,每个单词的首字 母大写,其余小写
Native_place=’吉林’ #类属性----直接写在类里面的变量成为类属性
def__init__(self,name,age): #name,age为实例属性
self.name = name #self.name称为实体属性,进行了一个赋值的操作,将局部变量name的值赋给实体属性
Self.age = age
#实例方法
def info(self):
Print(‘我的名字叫:’,self.name,’年龄是:’self.age)
#类方法
@classmethod
Def cm(cls):# 在类之外定义的称为函数,在类之内定义的称为方法
Print(‘类方法’)
#静态方法
@staticmethod
Def sm():
Print(‘静态方法’)
类的组成:
类属性:类中方法外的变量称为类属性,被该类的所有对象所共享
实例方法:使用@classmethod修饰的方法,使用类名直接访问的方法
静态方法:使用@staticmethod修饰的主法,使用类名直接访问
类方法
对象的创建:
对象的创建又称为类的实例化
语法:
实例名=类名()
意义:有了实例就可以调用类中的内容
类名.方法名(类的对象)-->实际上就是方法定义处的self
面向对象的三大特征
封装:提高程序的安全性
将数据(属性)和行为(方法)包装到类对象中。
继承:提高代码的复用性
语法格式:class 子类类名(父类1,父类2...);
Pass
如果一个类没有继承任何类,则默认继承Object
Python支持多继承
定义子类时,必须在其构造函数中调用父类的构造函数
方法的重写:如果子类对继承自父类的某个属性或方法不满意,可以在子类中对其(方法体)进行重写编写
子类重写后的方法中可以通过super().xxx()调用父类中被重写的方法
Object类:
Object类 是所有类的父类,因此所有类都有object类的属性和方法。
内置函数dir()可以查看指定帝乡所有属性
经常用于print()方法,帮我们查看对象的信息,所有我们经常会对_str_()方法重写
多态:提高程序的可扩展性和可维护性
多态就是“具有多种形态”,它指的是:几遍不知道一个变量所引用的对象用自定义是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象和类型,动态决定调用那个对象中的方法。
类的特殊方法和属性:
特殊属性:_dict_:获得类对象或实例对象所绑定的所有属性和方法的字典
特殊方法:_len_():通过重写_len()_方法,让内置函数len()的参数可以是自定义类型
_add_():可使用自定义对象具有“+”的功能
_new_():用于创建对象
_init_():对创建的对象进行初始化
类的浅拷贝和深拷贝:
变量的赋值操作:只是形成两个变量,实际上还是指向同一个对象
浅拷贝:python拷贝一般都是浅拷贝,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象
深拷贝:使用copy模块的deep copy函数,递归拷贝对象中包含的子对象,源对象和拷贝对象所有的子对象也不相同
模块:
函数与模块的关系: 一个模块中可以包含N多个函数
在python 中一个扩展名.py的文件就是一个模块
使用模块的好处
方便其他程序和脚本的导入并使用
避免函数名和变量名冲突
提高代码的可维护性
提高代码的可重用性
包:
包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录
作用:
代码规范
避免模块名称冲突
包与目录区别
包含_init_.py文件的目录称为包
目录通常不包含_init_.py文件