python的模块和类_Python模块和类.md
模块的定义
代码的层次结构
对于python的层次结构一般为包->模块
包也就是文件夹,但是文件夹下必须有文件"init.py"那么此文件夹才可以被识别为包。"init.py"文件可以为空,也可以不为空。不为空的情况以后详细写
模块其实就是.py文件
类的基础
基本概念
在模块中定义一个类,类的最基本结构如下:
#对于模块的说明
'a test module'
#作者
__author__ = 'liyue'
#定义一个类名称为ClassDemo,继承类顶级类object
class ClassDemo(object):
#定义一个类的成员函数
def sayHello(x):
print("Hello:%s" % x)
#下面的代码有两个作用:
# 1.调试或者执行当前文件,也就是ClassDemo时候,那么会执行下面代码
# 2.如果是其他文件调用当前文件,那么下面代码避免当前文件重复执行'''
if __name__ == "__main__":
#测试本文件
ClassDemo.sayHello('li')
类的调用
下面演示了怎么调用另一个模块的类:
#对于模块的说明
'a demo of call class'
#作者
__author__ = 'liyue'
#导入其他模块有两种写法:
# import modulename.classname as 别名
# from moudlename imprt classname as 别名
#import FunctionDemo.ClassTest as ct
from FunctionDemo import ClassTest as ct
class ClassCall:
def testMain():
#将当前的类名称传入
funInstance = ct.ClassDemo()
funInstance.sayHello()
#普通的调用传入
ct.ClassDemo.sayHello('ClassCall')
if __name__ == '__main__':
#调用模块ClassTest的类
ClassCall.testMain()
在这里要注意对于import的两种方式使用细节。在python中重要关键字都是用两个下划线作为标志,要注意写法且自己定义时候不能重名。
变量的作用域
使用单下划线作为前缀的变量:_XXX表明这是一个私有的变量。
这个私有的作用主要是用于编码规范,不能完全防止访问此变量。例如可以通过_classname_XXX的方式,且此此方式不是固定的。
对于变量的访问最好通过函数封装来完成
python的Syntactic sugar是需要特别注意的,一个函数没有入参,那么调用时候隐含了一个入参也就是self。也就是说对于一个函数:
def fun(paraA);
pass
其真实的声明是这样的:
def fun(self, paraA):
pass
上述内容代码:
#对于模块ClassTest.py的说明
'a test module'
#作者
__author__ = 'liyue'
#定义一个类名称为ClassDemo,继承类顶级类object
class ClassDemo(object):
#定义一个类的成员函数
def sayHello(x):
print("Hello:%s" % x)
name = ''
_age = 0
#定义一个初始化函数
def __init__(self, name, age):
self.name = name
self._age = age
#定义私有函数
def getterName(self):
return self.name
def _getterAge(self):
return self._age
def pintNameAndAge(self):
print('Name is:%s Age is:%s' % (self.getterName(), self._getterAge()))
#下面的代码有两个作用:
# 1.调试或者执行当前文件,也就是ClassDemo时候,那么会执行下面代码
# 2.如果是其他文件调用当前文件,那么下面代码避免当前文件重复执行'''
if __name__ == "__main__":
#测试本文件
ClassDemo.sayHello('li')
#测试函数的封装
cd = ClassDemo('zhangsan', 20)
cd.pintNameAndAge()
对象信息
可以用type来获取对象信息,type的返回值是类
对于有继承关系的类而言用isInstance判断,所以通常用isInstance即可
#对于模块Animal.py的说明
'a demo of class type'
#作者
__author__ = 'liyue'
class Animal(object):
pass
class Dog(Animal):
pass
class Cat(Animal):
pass
class PrintInfo(object):
def testMain():
a = Animal()
d = Dog()
c = Cat()
print('Animal and Dog isInstance: %s' % isinstance(Animal, Dog))
print('a and Dog Animal: %s' % isinstance(a, Animal))
print("c's type is: %s" % type(c))
if __name__ == '__main__':
PrintInfo.testMain()
实例属性和类属性
#对于模块Animal.py的说明
'a demo of class type'
#作者
__author__ = 'liyue'
class Animal(object):
name = 'an animal'
class PrintInfo(object):
def testMain():
a = Animal()
#没有绑定新的类属性,输出默认值
print(a.name)
#给实例绑定了类属性,输出实例的类属性值
a.name = 'a dog'
print(a.name)
#类本身的属性值不变
print(Animal.name)
#删除实例绑定的类属性值
del a.name
#此时又输出默认的值
print(a.name)
if __name__ == '__main__':
PrintInfo.testMain()
python的模块和类_Python模块和类.md相关推荐
- python导入同一文件夹下的类_Python模块导入机制与规范
前言 在我们平常工程里使用Python的过程中,经常需要解决各个模块的导入问题,而且也常常遇到引用路径查找不到.交叉导入模块等等问题,故写这篇文章,旨在讲述Python的模块导入机制和我们平时大型项 ...
- python中的模块和类_Python模块与类
你混淆了两个概念.python"模块"是一个包含可以导入的python代码的文件.python"类"是可以在模块中定义的东西.在 在您的示例中,apple和{} ...
- python导入包的输入法_python 模块和包的导入
http://www.cnblogs.com/linhaifeng/articles/6379069.html 1,模块 开源模块 https://pypi.python.org/pypi pip/ ...
- 有没有讲python模块的书_python - 模块,包
一.模块 定义:有些功能开发者自己无法完成(例:与操作系统打交道,时间,1000取随机数,压缩文件,网络通信),需要借用已经实现的函数/类来完成这些功能 模块的分类: 1, 内置函数:安装pyth ...
- python模块包教学_python模块和包
模块和包 模块和包并不是新的语法,而是python中为了更好地对代码进行分块组织管理,所提供的一种代码规范.他们根据代码的功能将区别不大的代码放在一起管理,使大型程序的设计更加醒目,层次更加清晰. 1 ...
- python好用的模块和包_Python模块和包详细讲解与实例分析
一丶模块 我们经常说模块模块的,究竟什么是模块呢? 一个模块就是包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀 但其实import加载的模块分为四个通用类别: 1.使用Pyth ...
- python模块的函数_python模块内置函数
python提供了一个内联模块buildin,该模块定义了一些软件开发中经常用到的函数,利用这些函数可以实现数据类型的转换.数据的计算.序列的处理等. 模块的内置函数: 1.apply():可以调用可 ...
- python模块搜索路径_Python模块搜索路径
当一个名为 spam 的模块被导入的时候,解释器首先寻找具有该名称的内置模块.如果没有找到,然后解释器从 sys.path 变量给出的目录列表里寻找名为 spam.py 的文件.sys.path 初始 ...
- python安装在什么地方_python模块安装目录在哪里
Python 的强大,其中一个重要原因是 Python 有很丰富的库(模块)从而可以比较方便地处理各种各样的问题. Python 开发 的第三方 modules 一般都安装在一些固定的路径,如下: U ...
最新文章
- JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用 1
- datagridview 设置选中行_Sublime Text 3最好的功能、插件和设置
- 欧亚马 java折叠车_如何选择欧亚马折叠车?
- 《深度学习笔记》——防止梯度消失的学习笔记
- [ mongoDB ] - 文档型数据库设计模式-如何存储树形数据 [转]
- 前端视频截图的方法canvas.drawImage()
- 北京大学计算机学硕考研分数线,2020北京大学研究生分数线汇总(含2016-2020历年复试)...
- Jeffrey Dean联署论文 The Case for Learned Index Structures
- python数据分析——简单且有用的代码
- 前端项目实战11-hook usememo使用
- Floyd-Warshall算法(Floyd-Warshall algorithm)
- @Cacheable失效
- 深圳:华侨城,世界之窗,锦绣中华
- 写给想通过程序员转型为项目经理的人
- python pip 设置代理
- 弘辽科技:如何查看淘宝直通车排名?对手竞价怎么看?
- 项目经理必看!常用的项目管理工具及方法
- gnuplot下载安装使用
- hhuoj:1398 红与黑
- 李宁特步雅戈尔们逆势增长,底层驱动是什么?
热门文章
- ecshop 搜索热词推荐_拼多多搜索推广实操——如何选择正确的关键词实现高投产!...
- python怎么安装本地的egg_python egg怎么安装
- qnx efs文件系统binary修复
- python面向对象还是过程_Python学习————面向对象和面向过程
- b+tree数据结构可视化_数据结构: B+Tree及其应用
- java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...
- python真实环境与虚拟环境均配置jupyter的方法,虚拟开发环境增加到notebook选项中
- spark集群运行模式理解
- php 跳转网页 变量,php变量与JS变量实现不通过跳转直接交互的方法
- java面向对象编程集合边框_Java学习系列(七)Java面向对象之集合框架详解(上)