01 类(class)的简介
1、 我们所学习的对象都是Python的内置对象,但是内置对象并不能满足所有的需求,所以我们在开发中经常需要自定义一些对象。
类,简单理解它就相当于一个图纸,在程序中,我们需要根据类来创建对象。所以类就是对象的图纸!
我们也称对象是类的实例,如果多个对象是通过一个类创建的,我们称这些对象是一类对象。像int(),float(),bool(),str(),list(),dict()……这些都是类。
例如:
a=int(10)等价于a=10
2、 我们自定义的类都需要使用大写字母开头,使用大驼峰命名法(帕斯卡命名法)来对类命名。
例如:
a=int(10)#创建一个int类的实例b=str('hello')#创建一个str类的实例print(a,type(a))print(b,type(b))
3、 定义一个简单的类,使用class关键字来定义类,语法和函数很像!
语法:
class 类名([父类]):
代码块
例如:
class MyClass():passprint(MyClass)#MyClass是一个主函数
例如:
class MyClass():passmc = MyClass()mc_2=MyClass()mc_3=MyClass()mc_4=MyClass()print(mc,type(mc))#MyClass这个类创建完成,mc, mc_2, mc_3, mc_4都是MyClass的实例,它们都是一类对象。
4、 isinstance()用来检查一个对象是否是一个类的实例。
例如:
result=isinstance(mc,MyClass)print('result=',result)
5、 类也是一个对象。
类就是一个用来创建对象的对象。
类是一个type类型的对象,定义类实际上就是定义了一个type类型的对象。
现在我们通过MyClass这个类创建的对象是一个空对象,也就是对象中实际上什么也没有,我们可以通过向对象添加变量,对象中的变量称为属性。
语法:对象.属性名=属性值
例如:
mc.name='你好' print(mc.name)
02 类的定义
1、 类和对象都是对现实生活中事物或程序中的内容的抽象,实际上所有的事物都有两部分构成:
- (1)数据(属性);
- (2)行为(方法)。
2、 尝试定义一个表示人的类。在类中也可以定义函数,类中定义的函数,我们称为方法。这些方法可以通过该类的所有实例来访问。
例如:
class Person:name='黎明'#在类的代码块中,我们可以定义变量和函数b=20p1=Person()#创建一个Person的实例p2=Person()print(p1.name,p2.b)#所有实例都可以访问这些变量
03 模块
1、 模块(module)
模块化指将一个完整的程序分解为一个一个小的模块,通过将模块组合,来搭建出一个完整的程序。
不采用模块化,是统一将所有的代码编写到一个文件中。
采用模块化,将程序分别编写到多个文件中。
2、 模块化的优点:
- (1)方便开发;
- (2)方便维护;
- (3)模块可以复用!
3、 模块的创建:
在python中一个py文件就是一个模块,要想创建模块,实际上就是创建一个python文件。
注意:模块名要符合标识符规范。
4、 在一个模块中引入外部模块:
import 模块名,(模块名就是python文件的名字,注意不要py)。
例如:import text_module ,可以引入同一个模块多次,但是模块的实例只会创建一个。
5、 第二种引入模块的方法:
import 模块名 as 模块别名
例如:
import text_module as text print(text)
text是给text_module起的别名
6、 import可以在程序的任意位置调用,但是一般情况下,import语句都会统一写在程序的开头。
在每一个模块内部都有一个__name__属性,通过这个属性可以获取到模块的名字, __name__属性值为 __main__的模块是主模块,一个程序中只会有一个主模块。
主模块就是我们直接通过Python执行的模块。
例如:
import text_module as textprint(text.__name__)print(__name__)
7、 可以在模块中定义变量,在模块中定义的变量,在引入模块后,就可以直接使用了。
例如:
import text_module as text print(text.a,text.b)
8、 也可以只引入模块中的部分内容
语法:from 模块名 import 变量,变量……
例如:
from text_module import a print(a)
或者:
from text_module import a,b print(a,b)
或者:
from text_module import* print(a,b)#星号表示引入所有内容
9、添加了下划线的变量,只能在模块内部访问,在通过import*引入时,不会引入下划线开头的变量。
例如:
from text_module import* print(_c)from text_module import _c print(_c)