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("")
运行结果: