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. 3. Configure the Identity Service

    Controller Node: 安装认证服务: 1. sudo apt-get install keystone   2. sudo vi /etc/keystone/keystone.conf [ ...

  2. hibernate将本地SQL查询结果封装成对象

    hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...

  3. DNS:www.flickr.com

    203.84.197.9 203.84.197.25 203.84.197.26 203.84.197.27

  4. a single statement, not multiple statements

    http://dev.mysql.com/doc/refman/5.7/en/prepare.html Statement names are not case sensitive. preparab ...

  5. ext在web工程目录导致myeclipse内存溢出问题

    分类: Extjs2013-01-24 00:01 2068人阅读 评论(2) 收藏 举报 当在eclipse中的web工程中增加了extjs4,出现An internal error occurre ...

  6. 最有用的Linux命令行使用技巧集锦

    最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...

  7. [收藏]NET技术+25台服务器怎样支撑世界第54大网站

    .NET技术+25台服务器怎样支撑世界第54大网站   英文原文:StackOverflow Update: 560M Pageviews A Month, 25 Servers, And It's ...

  8. 低功耗蓝牙4.0BLE编程-nrf51822开发(8)-GATT

    The Generic Attribute Profile (GATT)使用属性定义一个服务框架,定义了服务和特性的过程和数据格式,包含发现.读取.写入.通知指示特性和配置特性广播. GATT配置文件 ...

  9. Qt 之 使用 https发送 HTTP请求(使用OPENSSL库)

    一.简述 在使用Qt发送HTTP请求中一般使用的链接都是http://前缀,而有的服务器支持 https://前缀的链接,而Qt本身是支持https的,但是https访问需要用到SSL认证,而QT默认 ...

  10. VB的注释

    VB程序中的注解有两种: 第1种是以单引号 ' 开头的,但如果这个符号是在双引号之内的,则视为文本,不做为注释引导符,这个符号后面的内容均为注释内容. 第2种就REM后加注释内容(REM与注释内容要空 ...