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 ...
随机推荐
- Careercup | Chapter 7
7.4 Write methods to implement the multiply, subtract, and divide operations for integers. Use only ...
- JavaWEB入门
首先,我们已知的是Web资源分为:静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变.常用的静态web开发技术即为html:动态web 资源:指web页面中供人们浏览的数据是 ...
- 归纳整理 PHP大神的十大优良习惯
2015年03月04日11:26 来源:程序师 作者:TECHUG 编辑:覃里 查看全文 赞(0)评论(0) 分享 标签: PHP , 编程指南 , PHP开源项目 [IT168 资讯] 1.多阅读手 ...
- Yii源码阅读笔记(二)
接下来阅读BaseYii.php vendor/yiisoft/yii2/BaseYii.php—— namespace yii; use yii\base\InvalidConfigExceptio ...
- composer autoload
1.引入autoload 文件 include “vendor/autoload.php” 2.自定义的单文件引入 “autoload”:{ "files":["lib/ ...
- ubuntu日志清理
由于ubuntu日志文件syslog 和 kern.log 时刻在增长,一会儿就使得根目录文件夹不够用了,需使用如下命令清理 sudo -i输入密码echo > /var/log/syslog ...
- flex mxmlc 手动编译项目
首先: 1.下载flex的sdk,如果你电脑有装flash builder,它自带了一份,位于安装目录的sdks目录下. 备注:(sdk依赖java的jre) 2.配置mxmlc的java运行环境jr ...
- C++ 中static 使用大全
/// 静态全局变量 :只能在当前cpp中访问到 static int s_global = 0; void funcA() { /// 静态局部变量 (函数静态变量) 初始化过一次就不会 ...
- JsonCpp 简单使用
[转]自: http://www.cnblogs.com/ytjjyy/archive/2012/04/17/2453348.html JsonCpp 是一个C++用来处理JSON 数据的开发包.下面 ...
- 冒泡排序与插入排序(C#实现)
本人应届生面试,发现被问了2次关于排序的算法.当时竟然没写出来!!!好吧,可能是用库函数多了,很久没搞算法了,在纸上写没感觉吧. 今天花了1个多小时写了下冒泡排序与插入排序(C#实现),并写了注释和小 ...