Python极简笔记(7)---类、模块

本篇目录

  • 一、创建类
    • 1.创建过程
    • 2.类的实例化
  • 二、类特性及类BIF
    • 1.特性
    • 2.BIF
  • 三、模块
    • 1.常规定义及调用
    • 2.模块分割语句
    • 3.模块路径
    • 4.包(package)
      • 4.1 定义
      • 4.1 目录结构
  • 四、补充模块

一、创建类

定义:类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

1.创建过程

class Person(object):				#类名第一个字母大写(object为所有类父类)     
	#属性:用名词			  	 			  
	__name = 'chuck'			    #类似C++的private变量,双下划线,仅自己可用
	height = 176					#类似C++的public变量,公用
	_weight = 80					#类似C++的protect变量:仅可子类和自己函数调用
	one = Person()					#实例也可以作为属性,调用属性实例的方法self.one.check()
		
	#类内方法:用动词
	def __init__(self , name):		# 实例初始化方法,若没传入参数,则使用类内默认参数
		self.__name = name 			#__init__方法不能包含return语句
		
	def _check(self):				#内部方法
		pass
		
	def show_height(self):			#方法不传参数也要填self
		print('name is',self.__name,'hight is',self.height) 
		
	def get_default_weight(self):
		return self.__weight		#有返回值的方法
		
	def __call__(self):				# 实例本身上调用默认函数,Python类的特殊函数
        print('My name is %s.' % self.name)	

注:

  • __init__方法:类的构造函数,类可以起到模板的作用,在创建实例的时候,把必须绑定的属性强制塞进此方法,此方法可以省略,若省略,则p = Person(),则创建了一个空的类Person的实例p
  • self:相当于C++中的this,类中方法的第一个参数一定是self,以保证可以调用类内的属性,例如:self.height
  • 方法:
    • 除了首参数是self,其他同普通函数设置,若与属性同名,则抛出异常
    • __xxx__的函数为特殊用途的函数,call:调用实例方法为instance.method(),有此语句可instance(),直接调用call

2.类的实例化

p = Person('duke')				#创建实例p,数据类型为class Person,自动调用__init__方法向p里塞属性
p.show_height()					#调用类的方法(无返回值)
>>>'name is duke height is 176'

print(p.height)					#类外使用类内的public变量
>>>176

p.height = 180					#实例重新赋值,实例此变量变化,其他实例及类本身不变
print(p.height)	
>>>180

del p.height					#删除实例属性,类的属性就恢复了
print(p.height)
>>>176

num = p.get_default_weight()	#调用类的方法(有返回值)
print(num)
>>>80

二、类特性及类BIF

1.特性

  • 封装:类内private变量,类外不可访问;类内的方法实现过程,对类外屏蔽
  • 多态:子类可以重写父类的方法,方法同名即可
  • 继承
    * 功能:子类可以继承父类的方法,属性,精简类的代码量
    * 写法:class 子类名(父类名):,例:class Chuck(Name):
    * 关联父与子类的初始化
    class Male(Person):					# Male是Person的子类
    
    #类内方法:用动词
    def __init__(self , name , age):	# 实例初始化方法
    	Person.__init__(self , name) 	# 先调用父类初始化方法,继承其属性
    	self.age = age					# 赋值自己的属性
    

2.BIF

class B(A):
	pass
  • 判断子类(返回True)
    issubclass(B,A)
  • 判断实例对象属于某个类(返回True)
    isinstance(b_1,B)

三、模块

定义:一个独立的程序文件hello.pyhello即为模块名,可以在其他程序中导入调用

1.常规定义及调用

  • 常规

    #!/usr/bin/env python3.6			#Linux环境中可使用命令  ./程序文件名  的方法执行
    # -*- coding: utf-8 -*-				#表示.py文件本身使用标准UTF-8编码
    ' a test module '					#表示模块的文档注释
    __author__ = 'chucksun'				#使用__author__变量把作者写入程序
    
    模块语句(含improt、类名、函数名)		
    
    if __name__=='__main__':			#测试部分,当模块被外部程序import时,此语句不执行
    	test()							#测试函数,像自动化输入一些参数测试模块
    
  • 调用

    import 模块名						#方法1,模块名不需要加后缀名
    import 模块名 as 别名					#方法2,推荐
    from 模块名 import 函数名或类名		#方法3,同时导入命名空间了,import后可接多个名称,逗号分开	
    
    #调用模块中函数
    变量 = 模块名.函数名或类名()			#方法1
    变量 = 别名.函数名或类名()				#方法2
    变量 = 函数名或类名()					#方法3	
    
  • 模块文档注释

    import 模块名
    模块名.__doc__
    
  • 模块源代码

    import 模块名
    模块名.__file__
    

2.模块分割语句

  • 模块文件model.py
    语句块1
    if __name__ == '__main__':		#在此文件以模块形式,被导入到其他程序源码中时,屏蔽语句块2
    	语句块2						#此处通常放置模块的测试语句,测试本模块功能
    

3.模块路径

  • 查找Python默认模块搜索路径
    import sys
    sys.path						#以列表形式显示Python搜索路径,有个空目录,代表当前目录
    sys.path.append('C:\\')			#临时增加搜索路径(关闭shell即消失)
    

4.包(package)

4.1 定义

包:一种管理 Python 模块命名空间的形式,模块管理

4.1 目录结构

  • 目录结构示意(蓝色为文件夹)
    Python极简笔记(7)---类、模块_第1张图片
  • __ init__.py:普通文件夹和包的唯一区别,有这个文件即是包
  • sys.path:标识Python搜索目录,若要所有程序都可调用包,包必须在搜索目录下(有个空目录,代表程序当前目录)
  • 调用包
    • 普通调用:import 包名.模块 as f,程序内使用f.函数名()c = f.类名()
    • 多重调用:from 包名.模块 import 函数名1,函数名2,类名1,程序内使用函数名1()c = 类名1()
    • 子包调用:from 包名.子包名1.模块 import 函数名1,程序内使用函数名1()

四、补充模块

点此跳转到模块简介单元

上一篇:Python极简笔记(6)—异常、三神器

你可能感兴趣的:(#,Python)