python_类
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_类的更多相关文章
- python_类与对象学习笔记
class Phone: #手机属性===>类属性 # color='black' # price=4500 # brand='oppo' # size='5.5' #参数化-魔法方法--初始化 ...
- 零基础学习python_类和对象(36-40课)
今天我们开始学习面向对象的知识咯,之前我对面向对象也学的懵懵的,因为感觉知道好像又不是特别清楚,接下来我们一起来学习类和对象吧.零基础的课程我都是看小甲鱼的视频学的,没基础的可以去这个网址下载视频学习 ...
- Python_类的继承与方法重写
1.新建子类时,括号内要传入继承的父类名 2.super()方法:自动寻找当前类的父类,并调用父类的构造函数,初始化属性值 class Cup: #构造函数,初始化属性值 def __init__(s ...
- 人生苦短_我用Python_类与对象的概念_006
Python类与对象的概念类和对象--->万事万物都对象物以类聚.人以群分 --->?划分标准性别分 男女 中性成绩分 优秀 良好 不及格 类->根据类的属性来划分类的实例-> ...
- Python_类的私有属性、私有方法
1.私有属性:只需要在初始化时,在属性名前加__ class Cup: #构造函数,初始化属性值 def __init__(self,capacity,color): #私有属性,只需要在属性名字前加 ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- python_如何定义装饰器类?
案例: 实现一个能将函数调用信息记录到日志的装饰器 需求: 把每次函数的调用时间,执行时间,调用次数写入日志 可以对被装饰函数分组,调用信息记录到不同日志 动态修改参数,比如日志格式 动态打开关闭日志 ...
- python_如何让类支持比较运算?
案例: 有时我们希望自定义的类,实例间可以使用比较运算符进行比较,我们自定义比较的行为. 需求: 有一个矩形的类,我们希望比较两个矩形的实例时,比较的是他们的面积 如何解决这个问题? 在类中重新定义比 ...
- Python_编写UDP通信编解码类、文件的上传、远程执行命令、黏包
1.UDP通信编解码类 (1) 类 # ------------------UDP通信解码编码类------------------------ from socket import * class ...
随机推荐
- [ZZ] Shadow Map
Shadow Map 如何能够高效的产生更接近真实的阴影一直是视频游戏的一个很有挑战的工作,本文介绍目前所为人熟知的两种阴影技术之一的ShadowMap(阴影图)技术. ShadowMap技术 ...
- QuickStart OpenvirteX
参考:ubuntu14.04安装OpenVirteX 预准备: Java 7 sudo add-apt-repository ppa:webupd8team/java sudo apt-get upd ...
- P4factory <Integration with Mininet>
在终端A进入simple_router目录,make bm之后,执行 ./run_demo.bash 成功和Mininet进行协作: *** Creating network *** Adding h ...
- Linux命令echo -e
在Linux命令中 echo -e 这个参数e是什么意思. echo –e “I will use ‘touch’ command to create 3 files.” 这里参数e的作用是什么 ma ...
- hdf第一周完了,突然时间静止.,醒了就早点去公司上班,再努力一点
周一要了个任务,做评价完成,分享完成的页面,做到周四发现可能做不出来,找dzy,逻辑比较混乱,想要放弃了,感觉自己非常没用.昨天跟豆聊了一下,否定自己是一点意义也没有的,觉得自己很差劲,无助的感觉跟初 ...
- HybridTime - Accessible Global Consistency with High Clock Uncertainty
Amazon's Dynamo [9] and Facebook's Cassandra [13], relax the consistency model,and offer only eventu ...
- quanpailie quanbianli
#include<stdio.h>char data[5]={'a','b','c','d','e'};int vist[5]={0};char step[5]={0};char bu[5 ...
- ubuntu中一些配置文件含义
/var/log/apache2/mod_jk.log apache2 mod_jk错误日志错误 /conf/server.xml ...
- ArcGIS for Sever 10.1 服务迁移与恢复
=== 声明:以下内容本是自己写给单位内部同事的参考手册,但是被传到百度文库中.陆续有用户就这方面的问题,通过电话,邮件等方式联系我.首先,感到荣幸.其次是,由于本人当时测试和编写的时候,由于仓促,可 ...
- Python 虚拟环境Virtualenv
本人也是Python爱好者,众所周知,Python扩展多,每次为了测试,安装各种各样的扩展,这样导致本地的Python环境非常混乱,就有人想到搞个隔离环境 和 本地环境没有关系,随时可以删除这个隔离 ...