1.类
描述具有相同属性与方法的对象的集合。
2.创建类
使用class来创建一个新类,class之后为类的名称并以冒号结尾
3.程序
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 4 class Employee: 5 '所有员工的基类' 6 empCount = 0 7 8 def __init__(self, name, salary): 9 self.name = name 10 self.salary = salary 11 Employee.empCount += 1 12 13 def displayCount(self): 14 print "Total Employee %d" % Employee.empCount 15 16 def displayEmployee(self): 17 print "Name : ", self.name, ", Salary: ", self.salary
4.实例化
不需要new、
5.程序
1 # -*- coding: utf-8 -*- 2 from ClassTest1 import Employee 3 "创建 Employee 类的第一个对象" 4 emp1 = Employee("Zara", 2000) 5 emp1.displayCount() 6 emp1.displayEmployee() 7 "创建 Employee 类的第二个对象" 8 emp2 = Employee("Manni", 5000) 9 emp2.displayCount() 10 emp2.displayEmployee() 11 12 print Employee.empCount
6.运行结果
注意点:empCount变量是一个类变量,它的值可以在类的所有实例之间共享,可以在内部类或者外部类使用Employee.empCount访问。
7.操作属性(添加,修改,删除)
1 # -*- coding: utf-8 -*- 2 from ClassTest import Employee 3 "创建 Employee 类的第一个对象" 4 emp1 = Employee("Zara", 2000) 5 emp1.displayCount() 6 emp1.displayEmployee() 7 "创建 Employee 类的第二个对象" 8 emp2 = Employee("Manni", 5000) 9 emp2.displayCount() 10 emp2.displayEmployee() 11 12 print Employee.empCount 13 14 print '=====================' 15 16 #操作属性 17 emp1.age = 7 # 添加一个 'age' 属性 18 print emp1.age 19 emp1.age = 8 # 修改 'age' 属性 20 print emp1.age 21 del emp1.age # 删除 'age' 属性 22 23 #利用以下函数操作属性 24 setattr(emp1, 'age', 8) # 添加属性 'age' 值为 8 25 print hasattr(emp1, 'age') # 如果存在 'age' 属性返回 True。 26 print getattr(emp1, 'age') # 返回 'age' 属性的值 27 delattr(emp1, 'age') # 删除属性 'age'
8.效果
9.内置类的属性
__dict__
类的属性,包含一个字典
__doc__
类的文档字符串
__name__
类名
__module__
类定义所在的模块
__bases__
类的所有父类构成的元素,包含一个元组
10.程序
1 print "Employee.__doc__:", Employee.__doc__ 2 print "Employee.__name__:", Employee.__name__ 3 print "Employee.__module__:", Employee.__module__ 4 print "Employee.__bases__:", Employee.__bases__ 5 print "Employee.__dict__:", Employee.__dict__
11.类的私有属性和私有方法
类的私有属性:
__private_attrs:两个下划线开头,生命该属性为私有,不能在外部被使用,在内部可以self.__private_attrs。
类的方法:
类的方法必须使用参数self,且是第一个参数
类的私有方法:
__privvate_method:两个下划线开头,声明为私有方法,不能被外部调用,内部可以调用,self.__private_methods。
12.继承
语法:
class 派生类名 (基类名)
13.方法重写
14.多态
python不支持多态也不用多态。