如何定义类
class ClassName(base_class[es]):

"optional documentation string"

static_member_declarations

method_declarations

使用 class 关键字定义类。 可以提供一个可选的父类或者说基类; 如果没有合适的基类,

那就使用 object 作为基类。class 行之后是可选的文档字符串, 静态成员定义, 及方法定

义。

class FooClass(object):

"""my very first class: FooClass"""

version = 0.1 # class (data) attribute

def __init__(self, nm='John Doe'):

"""constructor"""

self.name = nm # class instance (data) attribute

print 'Created a class instance for', nm

def showname(self):

"""display instance attribute and class name"""

print 'Your name is', self.name

print 'My name is', self.__class__.__name__

def showver(self):

"""display class(static) attribute"""

print self.version # references FooClass.version

def addMe2Me(self, x): # does not use 'self'

"""apply + operation to argument"""

return x + x

Edit By Vheavens

Edit By Vheavens

在上面这个类中, 我们定义了一个静态变量 version, 它将被所有实例及四个方法共享,

__init__(), showname(), showver(), 及熟悉的 addMe2Me(). 这些 show*()方法并没有做什

么有用的事情, 仅仅输出对应的信息。 __init__() 方法有一个特殊名字, 所有名字开始和

结束都有两个下划线的方法都是特殊方法。

当一个类实例被创建时, __init__() 方法会自动执行, 在类实例创建完毕后执行, 类

似构建函数。__init__() 可以被当成构建函数, 不过不象其它语言中的构建函数, 它并不创

建实例--它仅仅是你的对象创建后执行的第一个方法。它的目的是执行一些该对象的必要的初

始化工作。通过创建自己的 __init__() 方法, 你可以覆盖默认的 __init__()方法(默认的

方法什么也不做),从而能够修饰刚刚创建的对象。在这个例子里, 我们初始化了一个名为 name

的类实例属性(或者说成员)。这个变量仅在类实例中存在, 它并不是实际类本身的一部分。

__init__()需要一个默认的参数, 前一节中曾经介绍过。毫无疑问,你也注意到每个方法都有

的一个参数, self.

什么是 self ? 它是类实例自身的引用。其他语言通常使用一个名为 this 的标识符。

如何创建类实例

>>> foo1 = FooClass()

Created a class instance for John Doe

屏幕上显示的字符串正是自动调用 __init__() 方法的结果。当一个实例被创建,

__init__()就会被自动调用。不管这个__int__()是自定义的还是默认的。

创建一个类实例就像调用一个函数, 它们确实拥有一样的语法。它们都是可调用对象。类

实例使用同样的函数运算符调用一个函数或方法。既然我们成功创建了第一个类实例, 那现在

来进行一些方法调用:

>>> foo1.showname() Your name is John Doe

My name is __main__.FooClass

>>>

>>> foo1.showver()

0.1

>>> print foo1.addMe2Me(5)

10

>>> print foo1.addMe2Me('xyz')

Edit By Vheavens

Edit By Vheavens

xyzxyz

每个方法的调用都返回我们期望的结果。比较有趣的数据是类名字。在showname()方法中,

我们显示 self.__class__.__name__ 变量的值。对一个实例来说, 这个变量表示实例化它的

类的名字。(self.__class__引用实际的类)。在我们的例子里, 创建类实例时我们并未传递

名字参数, 因此默认参数 'John Doe' 就被自动使用。在我们下一个例子里, 我们将指定一

个参数。

>>> foo2 = FooClass('Jane Smith') Created a class instance for Jane Smith

>>> foo2.showname()

Your name is Jane Smith

My name is FooClass

第十三章将详细介绍Python 类和类实例。

2.19 模块

模块是一种组织形式, 它将彼此有关系的Python 代码组织到一个个独立文件当中。

模块可以包含可执行代码, 函数和类或者这些东西的组合。

当你创建了一个 Python 源文件,模块的名字就是不带 .py 后缀的文件名。一个模块创

建之后, 你可以从另一个模块中使用 import 语句导入这个模块来使用。

如何导入模块

import module_name

如何访问一个模块函数或访问一个模块变量

一旦导入完成, 一个模块的属性(函数和变量)可以通过熟悉的 .句点属性标识法访问。

module.function()

module.variable

现在我们再次提供 Hello World! 例子, 不过这次使用 sys 模块中的输出函数。

>>> import sys

Edit By Vheavens

Edit By Vheavens

>>> sys.stdout.write('Hello World!\n')

Hello World!

>>> sys.platform

'win32'

>>> sys.version

'2.4.2 (#67, Sep 28 2005, 10:51:12) [MSC v.1310 32 bit

(Intel)]'

这些代码的输出与我们使用 print 语句完全相同。 唯一的区别在于这次调用了标准输出

的 write()方法,而且这次需要显式的在字符串中提供换行字符, 不同于print 语句, write()

不会自动在字符串后面添加换行符号。

关于模块和导入, 你可以在第12 章中得到更多有用的信息。在那里会详细介绍本章上面

所有提到的主题,希望我们提供的快速入门能达到你迅速使用Python 开始工作的目标。

Python 语句中有一些基本规则和特殊字符:

Python基础教程学习(三)的更多相关文章

  1. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  2. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入“p ...

  3. .Net程序员之Python基础教程学习----函数和异常处理[Fifth Day]

       今天主要记录,Python中函数的使用以及异常处理. 一.函数:    1.函数的创建以及调用. def Add(val1,val2): return val1+val2; print Add( ...

  4. .Net程序员之Python基础教程学习----判断条件与循环[Fourth Day]

        今天学习Python的判断条件与循环操作. 一. 布尔变量: 在学习判断条件之前必须的了解bool变量,在Python中bool变量与C语言比较类似,与.net差别比较大,其中下面集中情况需要 ...

  5. .Net程序员之Python基础教程学习----字典的使用 [Third Day]

      今天学习了字典的使用, 所谓的字典其实就是键值对数据, 一个字典里面有唯一的Key对应一个value,Key是唯一的,Value不唯一. 在.net添加相同的Key会报错,在Python,若出现相 ...

  6. .Net程序员之Python基础教程学习----字符串的使用 [Second Day]

         在The FirstDay 里面学习了列表的元组的使用,今天开始学习字符串的使用.字符串的使用主要要掌握,字符串的格式化(C语言中我们应该都知道,Python和C语言差别不大),字符串的基本 ...

  7. 【学习笔记】Python基础教程学习笔记

    教程视频网盘共享:http://pan.baidu.com/s/1hrTrR5E 03-python基础.if判断 print 输出数据 print("hahahah")----- ...

  8. python基础教程(三)

    序列概览 Python 包含6 种内建的序列,这里重点讨论最常用的两种类型:列表和元组. 列表与元组的主要区别在于,列表可以修改,元组则不能.也就是说如果要根据要求来添加元素,那么列表可以会更好用:而 ...

  9. python基础教程-第三章-使用字符串

    本章将会介绍如何使用字符串何世华其他的值(如打印特殊格式的字符串),并简单了解下利用字符串的分割.联接.搜索等方法能做些什么 3.1 基本字符串操作 所有标准的序列操作(索引.分片.乘法.判断成员资格 ...

随机推荐

  1. 应用服务器中对JDK的epoll空转bug的处理

    原文链接:应用服务器中对JDK的epoll空转bug的处理 前面讲到了epoll的一些机制,与select和poll等传统古老的IO多路复用机制的一些区别,这些区别实质可以总结为一句话, 就是epol ...

  2. CF3A 【Shortest path of the king】

    一句话题意:在8 * 8的棋盘上,输出用最少步数从起点走到终点的方案 数据很小,可以广搜无脑解决 定义数据结构体 struct pos{ int x,y,s; //x.y表示横纵坐标,s表示步数 ]; ...

  3. Kubernetes之YAML文件

    一.YAML 基础 YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便.它实质上是一种通用的数据串行化格式.后文会说明定义YAML文件创建Pod和创建Deployment. YA ...

  4. BFS && DFS

    HDOJ 1312 Red and Black http://acm.hdu.edu.cn/showproblem.php?pid=1312 很裸的dfs,在dfs里面写上ans++,能到几个点就调了 ...

  5. WORDPRESS登录后台半天都无法访问或者是访问慢的解决方法

    wordpress登录后台如果打开速度慢,一般分为两部分,第一部分是php虚拟主机的原因,其中主机的原因,又分为很多种情况.第二部分就是WordPress程序本身的问题.这里无忧主机小编主要是讲第二部 ...

  6. 使用mongo-java-driver-3.0.2连接MongoDB数据库

    这里使用的mongodb的java驱动版本是:3.0.2,文件名mongo-java-driver-3.0.2.jar  博客本地下载下载网址(也可以下载其它版本):http://central.ma ...

  7. CCF CSP 201512-2 消除类游戏

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201512-2 消除类游戏 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行 ...

  8. CentOS7.5安装MongoDB4.0与CRUD基本操作

    一 MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数 ...

  9. Django实战(14):让页面联动起来

    上一节我们实现了一个”能看不能用“的购物车,现在我们来使用这个购物车. 首先是产品目录界面中的”加入购物车“链接,我们希望点击这个按钮后,在购物车中添加该产品(添加的规则是如果购物车中已经有该产品就增 ...

  10. java程序员修炼之道——大牛告诉我们应该好好学习与修炼以下知识与技能

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 一:Java语言学习(对线程(thread),串行化,反射,网络编程,JNI技术, ...