1. 对象的概念

  对象包括特性和方法。特性只是作为对象的一部分的变量,方法则是存储在对象内的函数。对象中的方法和其他函数的区别在于方法总是将对象作为自己的第一个参数,这个参数一般称为self。

2. 类的概念

  类代表对象的集合,每个对象都有一个类。类的主要任务是定义它的实例会用到的方法。

3. 类的优点

  封装

  继承

  多态

4. 封装

  (1) 定义

    对象可以将他们的内部特性隐藏起来。在一些语言中,这意味着对象的特性只对自己的方法可用。在python中,所有的特性都是公开可用的,但是程序员应该在直接访问对象特性时,谨慎行事,因为他们可能无意中使得这些特性在某些方面不一致。

  (2) 格式

    class 类名:

      特性(变量)

      方法

  (3) 备注

    a) 方法和函数的区别:方法总是将对象作为自己的第一个参数,这个参数一般称为self

      b) python不支持私有方式,但是可以使用一些小技巧达到私有的效果。为了将方法和特性变为私有,只要在它的名字前加上双下划线即可。

    c) 前面有单下划线的名字都不会被“form moudle import *” 导入

    d) 设置所有类共有的特性: 类名.特性 = 值

5. 继承

  (1) 定义

    一个类可以是一个或者多个类的子类。子类从超类继承所有方法。

  (2) 格式

    class 类名(超类1,超类2,... 超类n):

      特性(变量)

      方法

  (3) 备注

    a) 如果一个方法从多个超类继承,那么必须要注意一下超类的顺序:先继承的类中的方法会重写后继承的类中的方法

6. 多态

  (1) 定义

    多态是实现将不同类的对象调用相同方法时,不需要知道对象属于哪个类就可以调用方法。

  (2) 格式

      无

  (3) 备注:

      无

7. 示例:

#coding:utf-8

#类的定义
class Person:
num = 0
age = 12 #定义所有对象共享的变量
def init(self):
Person.num = Person.num + 1 #没有self,成员方法就没有办法访问它们要对其特性进行操作的对象本身。
def setName(self, name):
self.name = name def getName(self, name):
return self.name def greet(self):
print "Hello world! my name is %s" % self.name #定义私有的技巧
def __getAge(self):
return self.age one_student = Person()
one_student.setName("zhangsan")
one_student.init()
one_student.greet() two_student = Person()
#特性可以直接在类的外部访问
two_student.name = "lisi"
two_student.init()
two_student.greet()
one_student.greet() #访问私有方法
#print one_student.__getAge()
#换种方式调用私有方法(在方法前加上下划线和类名)
print one_student._Person__getAge() #获取对象的数量
print Person.num #类的继承
class Singer(Person):
def sing(self):
print "%s is sing" % self.name one_singer = Singer()
one_singer.setName("Tracy")
one_singer.sing() #多态
var1 = ["a", "b", "", "c"]
var2 = ("", "", "", "", "")
str = "2015-01-12"
print "the num of the one in List is %d" % var1.count("")
print "the num of the one in Tuple is %d" % var2.count("")
print "the num of the one in String is %d" % str.count("")

  运行结果:

  

python_类的更多相关文章

  1. python_类与对象学习笔记

    class Phone: #手机属性===>类属性 # color='black' # price=4500 # brand='oppo' # size='5.5' #参数化-魔法方法--初始化 ...

  2. 零基础学习python_类和对象(36-40课)

    今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...

  3. Python_类的继承与方法重写

    1.新建子类时,括号内要传入继承的父类名 2.super()方法:自动寻找当前类的父类,并调用父类的构造函数,初始化属性值 class Cup: #构造函数,初始化属性值 def __init__(s ...

  4. 人生苦短_我用Python_类与对象的概念_006

    Python类与对象的概念类和对象--->万事万物都对象物以类聚.人以群分 --->?划分标准性别分 男女 中性成绩分 优秀 良好 不及格 类->根据类的属性来划分类的实例-> ...

  5. Python_类的私有属性、私有方法

    1.私有属性:只需要在初始化时,在属性名前加__ class Cup: #构造函数,初始化属性值 def __init__(self,capacity,color): #私有属性,只需要在属性名字前加 ...

  6. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  7. python_如何定义装饰器类?

    案例: 实现一个能将函数调用信息记录到日志的装饰器 需求: 把每次函数的调用时间,执行时间,调用次数写入日志 可以对被装饰函数分组,调用信息记录到不同日志 动态修改参数,比如日志格式 动态打开关闭日志 ...

  8. python_如何让类支持比较运算?

    案例: 有时我们希望自定义的类,实例间可以使用比较运算符进行比较,我们自定义比较的行为. 需求: 有一个矩形的类,我们希望比较两个矩形的实例时,比较的是他们的面积 如何解决这个问题? 在类中重新定义比 ...

  9. Python_编写UDP通信编解码类、文件的上传、远程执行命令、黏包

    1.UDP通信编解码类 (1) 类 # ------------------UDP通信解码编码类------------------------ from socket import * class ...

随机推荐

  1. MongoDB高可用模式部署

    首先准备机器,我这里是在公司云平台创建了三台DB server,ip分别是10.199.144.84,10.199.144.89,10.199.144.90. 分别安装mongodb最新稳定版本: w ...

  2. iOS 用宏定义写一个单例(Singleton)

    用如下方法定义单例 @interface singleton_interface(ClassName); @end 实现单例在 @implemention singleton_implemention ...

  3. 在UI线程之外显示Toast

    new Thread(){ public void run() { Looper.prepare(); Toast t = Toast.makeText(mContext, R.string.cras ...

  4. 详解linux运维工程师入门级必备技能

    详解linux运维工程师入门级必备技能 | 浏览:659 | 更新:2013-12-24 23:23 | 标签:linux it自动化运维就是要很方便的运用各种工具进行管理维护,有效的实施服务器保护 ...

  5. ExtJS笔记3 MVC Architecture

    MVC Architecture   MVC架构 Contents File Structure Creating the application in app.js Defining a Contr ...

  6. memcached学习笔记4--memcache扩展操作memcached

    1. 安装并配置memcache扩展库 找到php.ini文件 添加: extendsion= php_memcache.dll 并把对应的dll文件拷贝到ext目录 2. 使用PHP对Memcahc ...

  7. prepare PDO

    <?php $sql='SELECT email FROM users WHERE id = :id'; $statement=$pdo->prepare($sql);$userId=fi ...

  8. hdf第一周完了,突然时间静止.,醒了就早点去公司上班,再努力一点

    周一要了个任务,做评价完成,分享完成的页面,做到周四发现可能做不出来,找dzy,逻辑比较混乱,想要放弃了,感觉自己非常没用.昨天跟豆聊了一下,否定自己是一点意义也没有的,觉得自己很差劲,无助的感觉跟初 ...

  9. 不再写.bat

    <script type="text/javascript"> for (var w = 0; w < 24; w++) { setTimeout(functio ...

  10. Simple Web Example

    eclipse3.7 运行一个简单的servlet,Target Platfrom 必要的jar为 0 ACTIVE      org.eclipse.osgi_3.7.2.v20120110-141 ...