python 3快速入门之模块化和类

   首先引用官方的一段话

  Python 展现了“瑞士军刀”的哲学。 这可以通过它更大的包的高级和健壮的功能来得到最好的展现。

  例如:

  xmlrpc.client 和 xmlrpc.server 模块让远程过程调用变得轻而易举。 尽管模块有这样的名字, 用

  户无需拥有 XML 的知识或处理 XML。 ? email 包是一个管理邮件信息的库,包括 MIME 和其它基于

  RFC 2822 的信息文档。 不同 于实际发送和接收信息的 smtplib 和 poplib 模块, email 包包含一

  个构造或解析复杂消息 结构(包括附件)及实现互联网编码和头协议的完整工具集。 xml.dom 和

  xml.sax 包为流行的信息交换格式提供了强大的支持。同样, csv 模块支持在通 用数据库格式中直接

  读写。综合起来,这些模块和包大大简化了 Python 应用程序和其它 工具之间的数据交换。 国际化

  由 gettext , locale 和 codecs 包支持。

  这就是python的优点之一

  上节讨论了基础的一些东西和入门,这里开始讲一些和其他语言类似的地方

  这个时候为了比较方便,我们利用vs2012,安装插件的方法在上一篇文件中已经提到过。

  一、 模块化

  毕竟代码是需要保存的,而且模块化编程也是非常重要的,所以需要把文件保存在不同的地方,尤其是不同的文件夹,在这里展示一下建立的文件结构

  复制代码

  #Projrct1.py

  import test1

  print("test1.count do there")

  print(test1.__name__)

  a=test1.count(1,2,3)

  print(a)

  import NewFolder1.test2

  print('newfolder1.test2.count do there ')

  print(NewFolder1.test2.__name__)

  a=NewFolder1.test2.count(1,2,3)

  print(a)

  print(dir(test1))

  print(dir(NewFolder1.test2))

  复制代码

  #test1.py

  def count(a,b,c):

  return a+b-c

  #test2

  def count(a,b,c):

  return a+b+c

  #__init__.py

  print('use a folder!')

  首先我们可以通过右击.py文件的办法,来设置启动文件。

  我们可以使用import关键字来调用其他模块文件

  解释一下__init__文件,如果你想调用一个文件夹的文件,那个文件夹里必须有这么一个文件,调用文件之前,必须用这个文件来进行初始化,就是执行,当然里面空着也无所谓

  内置函数 dir() 用于按模块名搜索模块定义,它返回一个字符串类型的存储列表:

  执行顺序非常明显,我们可以发现.py文件中虽然我们只看到了一个函数,实际上里面有很多预定义的变量,比如__name__,就是指这个文件名。

  二、作用域和类

  Python和c++在类方面有一定关联,下面还是引用官方的一段话

  Python 的类机制通过最小的新语法和语义在语言中实现了类。 它是 C++何 Modula-3 语言中类 机制的混合。 就像模块一样,Python 的类并没有在用户和定义之间设立绝对的屏障,而是依赖 于用户不去“强行闯入定义”的优雅。 另一方面,类的大多数重要特性都被完整的保留下来:类继 承机制允许多重继承,派生类可以覆盖(override)基类中的任何方法或类,可以使用相同的方 法名称调用基类的方法。 对象可以包含任意数量的私有数据。

  暂时用下面一段话,讲一下作用域的事情,仍然是使用一段官方的教学代码说一下。

  复制代码

  def scope_test():

  def do_local():

  spam = "local spam"

  def do_nonlocal():

  nonlocal spam

  spam = "nonlocal spam"

  def do_global():

  global spam

  spam = "global spam"

  spam = "test spam"

  do_local()

  print("After local assignment:", spam)

  do_nonlocal()

  print("After nonlocal assignment:", spam)

  do_global()

  print("After global assignment:", spam)

  scope_test()

  print("In global scope:", spam)

  复制代码

  nonlocal非局部的 global全局

  确实和c++一样,设计时封装性并不是和c#一样完善,留个我们可以从外访问的机会

  现在谈一下类

  继承的方法 class lei(lei1,lei2,lei3....)在这里不再多提,可以继承多个类。

  Python2.7和pytho3.3n的区别之一是。3.3没有了经典类,全是新型类,原来就是class对象没有父类,那么就是从object继承而来的,但是在3.3中就成了,在没有继承父类的时候它默认继承了object类。虽说拖累了效率,但是也使代码结构更加完整。

  这点和主流的c#有点关系了。

  我们还是以一个基础的类来说一下

  复制代码

  class Person:

  name=''

  age=0

  def __init__(self,nm,ag):

  self.name=nm

  self.age=ag

  print("constructor run")

  pass

  def shuchu(self):

  print(self.name)

  print(self.age)

  passpass

  x=Person('wangji',20)

  x.shuchu()

  复制代码

  __init__()就是所谓的构造函数,在这里不再多提。

  对于学习过c#的朋友我们可以把self当做this,而且在定义函数的时候第一个形参需要是self,

  为什么?

  原理是python中对象的方法,需要先调用自己本身,所以本身也算作一个参数,在这里写出来了,函数的第一个形参我们就默认为self就可以

  我们可以尝试一下,方法的重载是不行的,但python作为面向对象语言,自然不会丢掉函数重载这个面向对象语言所共有的重要特性。。。。其实这个地方我们要通过默认形参来达到这样的目的。。这个地方,我也不是太了解,但是带有默认形参的方法确实可以解决一些和重载有关的问题。

  Python 中的所有方法本质上都是虚方法,所以说重写和其他语言基本一样。

时间: 2024-12-21 21:42:39

python 3快速入门之模块化和类的相关文章

日志服务使用Python SDK快速入门指南

为快速开始使用日志服务Python SDK,请按照如下步骤进行: 创建阿里云账号 为了访问阿里云日志服务,你需要有一个阿里云账号.如果没有,可首先如下创建阿里云账号: 访问阿里云官方网站,点击页面上"注册"按钮. 按照屏幕提示完成注册流程并进行实名认证. 为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用.具体实名认证流程请参考这里 获取阿里云访问秘钥 为了使用SDK,你必须申请阿里云的访问秘钥: 登陆阿里云管理控制台. 访问阿里云秘钥管理页面. 选择一对用于

python中文件读写的快速入门实例

说明:     相比其他语言python真的简洁很多,自己往前在学习C语言的过程中,起码要到很后面很后面才提起文件操作,但python的快速入门却以一种非常简洁的方法让你对文件操作有个体验,当然这是在linux环境下,不过不得不说,linux环境下进行编程的学习,确实是要比windows下面可以学到更多知识,下面的两个例子都是来自<Python核心编程>这本书中,真的非常经典! 一.创建并写入文件的实例 直接给代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

《Python 3程序开发指南(第2版•修订版)》——第1章 过程型程序设计快速入门 1.1 创建并运行Python程序

第1章 过程型程序设计快速入门 本章提供了足以开始编写Python程序的信息.如果此时尚未安装Python,强烈建议读者先行安装Python,以便随时进行编程实践,获取实际经验,巩固所学的内容. 本章第1节展示了如何创建并执行Python程序.你可以使用自己最喜欢的普通文本编辑器来编写Python代码,但本节中讨论的IDLE程序设计环境提供的不仅是一个代码编辑器,还提供了很多附加的功能,包括一些有助于测试Python代码.调试Python程序的工具. 第2节介绍了Python的8个关键要素,通过

【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)【下】

索引 [翻译]WPF应用程序模块化开发快速入门(使用Prism框架)[上] [翻译]WPF应用程序模块化开发快速入门(使用Prism+MEF)[中] 系统启动 系统使用Bootstrapper类型来启动程序,并初始化主窗口 /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application { protected override void On

【翻译】WPF应用程序模块化开发快速入门(使用Prism框架)【上】

这篇快速入门文章包括如何使用Prism进行编码.探索和创建模块的示例 创建模块: 模块是实现了IModule接口的类, 可以通过声明特性来给模块命名.控制其初始化.定义依赖等 注册模块: 模块可以通过以下方式注册: 直接使用代码: 可以直接使用代码把模块注册到模块目录 这样你就可以咱找业务逻辑来决定哪些模块需要注册到系统中来 在代码中注册的模块需要引用到系统中来,不能在运行时动态加载 使用配置文件: Prism支持通过加载一个配置文件来注册模块 这与在Silverlight中使用XAML方法注册

Durandal快速入门

Durandal是一个轻量级的JavaScript框架,其目标是单页面应用(SPAs)的开发变得简单而优雅.它支持MVC.MVP和MVVM等模式,因此不论你采用哪种类型的前端架构,Durandal都能胜任. Durandal以RequireJS为基础,加上一个轻量级的惯例层,带来了令人惊叹的生产效率,并且帮助你维持稳健的编码实践.配上开箱即用的富界面组件.模态对话框.事件/消息.组件.过渡效果.导航等等,使你可以轻松开发出任何你能想象的应用. 尽管Durandal才发布大约一年时间,但其社区正以

《Spring 3.0就这么简单》——第1章 快速入门 1.1 Spring概述

第1章 快速入门 本章通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速进入Spring Web应用的世界.实例应用按持久层.业务层和展现层进行组织,从底层DAO程序到Web展现程序逐层演进,一步步地搭建起一个完整的实例.通过本章的学习,读者可以独立完成一个典型的基于Spring的Web应用. 本章主要内容: Spring 概述 用户登录实例介绍 基于 Spring JDBC 的持久层实现 基于 Spring 声明式事务的业务层实现 基于 Spring MV

json快速入门学习教程

JSON快速入门 计算机语言中三种数据 1.标量 一个单独的字符串或者数字 比如"成都":7  2.序列 若干相关的数据按一定的顺序并列在一起(数组或列表) 比如"北京,成都":7 8 9 3.映射 名/值对 即数据名称与相对应的值 又称散列(hash)或字典 字典等等 比如 "四川省会:成都" JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 JSON的四个基本规则 (1)并列的数据之刘用逗号(&quo

Ajax.Net快速入门

ajax|快速入门 现在的项目准备用ajax,用ajax.net实现,而不是atlas,所以先看下ajax.net,Ajax.Net现在的最新版本是AjaxPro5.11.4.2,下载地址是:www.schwarz-interactive.de 首先我们新建个项目,名字是AjaxPro,我用的是vs2005beta2版本. 右击站点名字点add reference添加对我们刚刚下载来的那个叫AjaxPro.2.dll的引用,如果你用的是vs2003,则添加对AjaxPro.dll的引用,然后我们