模块的定义

代码的层次结构

对于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相关推荐

  1. python导入同一文件夹下的类_Python模块导入机制与规范

    前言 在我们平常工程里使用Python的过程中,经常需要解决各个模块的导入问题,而且也常常遇到引用路径查找不到.交叉导入模块等等问题,故写这篇文章,旨在讲述Python的模块导入机制和我们平时大型项 ...

  2. python中的模块和类_Python模块与类

    你混淆了两个概念.python"模块"是一个包含可以导入的python代码的文件.python"类"是可以在模块中定义的东西.在 在您的示例中,apple和{} ...

  3. python导入包的输入法_python 模块和包的导入

    http://www.cnblogs.com/linhaifeng/articles/6379069.html 1,模块 开源模块 https://pypi.python.org/pypi pip/ ...

  4. 有没有讲python模块的书_python - 模块,包

    一.模块 定义:有些功能开发者自己无法完成(例:与操作系统打交道,时间,1000取随机数,压缩文件,网络通信),需要借用已经实现的函数/类来完成这些功能 模块的分类: 1,   内置函数:安装pyth ...

  5. python模块包教学_python模块和包

    模块和包 模块和包并不是新的语法,而是python中为了更好地对代码进行分块组织管理,所提供的一种代码规范.他们根据代码的功能将区别不大的代码放在一起管理,使大型程序的设计更加醒目,层次更加清晰. 1 ...

  6. python好用的模块和包_Python模块和包详细讲解与实例分析

    一丶模块 我们经常说模块模块的,究竟什么是模块呢? 一个模块就是包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀 但其实import加载的模块分为四个通用类别: 1.使用Pyth ...

  7. python模块的函数_python模块内置函数

    python提供了一个内联模块buildin,该模块定义了一些软件开发中经常用到的函数,利用这些函数可以实现数据类型的转换.数据的计算.序列的处理等. 模块的内置函数: 1.apply():可以调用可 ...

  8. python模块搜索路径_Python模块搜索路径

    当一个名为 spam 的模块被导入的时候,解释器首先寻找具有该名称的内置模块.如果没有找到,然后解释器从 sys.path 变量给出的目录列表里寻找名为 spam.py 的文件.sys.path 初始 ...

  9. python安装在什么地方_python模块安装目录在哪里

    Python 的强大,其中一个重要原因是 Python 有很丰富的库(模块)从而可以比较方便地处理各种各样的问题. Python 开发 的第三方 modules 一般都安装在一些固定的路径,如下: U ...

最新文章

  1. JPA + EclipseLink + SAP云平台 = 运行在云端的数据库应用 1
  2. datagridview 设置选中行_Sublime Text 3最好的功能、插件和设置
  3. 欧亚马 java折叠车_如何选择欧亚马折叠车?
  4. 《深度学习笔记》——防止梯度消失的学习笔记
  5. [ mongoDB ] - 文档型数据库设计模式-如何存储树形数据 [转]
  6. 前端视频截图的方法canvas.drawImage()
  7. 北京大学计算机学硕考研分数线,2020北京大学研究生分数线汇总(含2016-2020历年复试)...
  8. Jeffrey Dean联署论文 The Case for Learned Index Structures
  9. python数据分析——简单且有用的代码
  10. 前端项目实战11-hook usememo使用
  11. Floyd-Warshall算法(Floyd-Warshall algorithm)
  12. @Cacheable失效
  13. 深圳:华侨城,世界之窗,锦绣中华
  14. 写给想通过程序员转型为项目经理的人
  15. python pip 设置代理
  16. 弘辽科技:如何查看淘宝直通车排名?对手竞价怎么看?
  17. 项目经理必看!常用的项目管理工具及方法
  18. gnuplot下载安装使用
  19. hhuoj:1398 红与黑
  20. 李宁特步雅戈尔们逆势增长,底层驱动是什么?

热门文章

  1. ecshop 搜索热词推荐_拼多多搜索推广实操——如何选择正确的关键词实现高投产!...
  2. python怎么安装本地的egg_python egg怎么安装
  3. qnx efs文件系统binary修复
  4. python面向对象还是过程_Python学习————面向对象和面向过程
  5. b+tree数据结构可视化_数据结构: B+Tree及其应用
  6. java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...
  7. python真实环境与虚拟环境均配置jupyter的方法,虚拟开发环境增加到notebook选项中
  8. spark集群运行模式理解
  9. php 跳转网页 变量,php变量与JS变量实现不通过跳转直接交互的方法
  10. java面向对象编程集合边框_Java学习系列(七)Java面向对象之集合框架详解(上)