-
类(Class): 用来描述具有相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。
-
类变量:在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外,通常不作为实例变量使用。
-
数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
-
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写。
-
局部变量:定义在方法中的变量,只作用于当前实例的类。
-
实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
-
继承:即一个派生类(derived class)继承基类(base class)的字段和方法。
创建群一个类
class Employee:'所有员工的基类' # 文档字符串empCount = 0 # 类变量def __init__(self, name, salary): # 类的构造方法self.name = nameself.salary = salaryEmployee.empCount += 1def displayCount(self):print "Total Employee %d" % Employee.empCountdef displayEmployee(self):print "Name : ", self.name, ", Salary: ", self.salary
类的属性
-
dict : 类的属性(包含一个字典,由类的数据属性组成)
-
doc :类的文档字符串
-
name: 类名
-
module: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
-
bases : 类的所有父类构成元素(包含了一个由所有父类组成的元组)
私有属性
-
foo: 定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。
-
_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
-
__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了,字类无法继承
访问私有属性
class Cat():def __init__(self, name, age):self.__name = nameself.age = ageif __name__ == '__main__':cat1 = Cat('喵喵', 22)print(cat1.age)print(cat1.name)
上述无法访问会报错,因为 name 是私有属性
class Cat():def __init__(self, name, age):self.__name = nameself.age = agedef get_name(self):return self.__nameif __name__ == '__main__':cat1 = Cat('喵喵', 22)print(cat1.age)print(cat1.get_name())
类的继承
class 派生类名(基类名)...# 具体案例class Parent: # 定义父类parentAttr = 100def __init__(self):print "调用父类构造函数"def parentMethod(self):print '调用父类方法'def setAttr(self, attr):Parent.parentAttr = attrdef getAttr(self):print "父类属性 :", Parent.parentAttrclass Child(Parent): # 定义子类def __init__(self):print "调用子类构造方法"def childMethod(self):print '调用子类方法'c = Child() # 实例化子类
c.childMethod() # 调用子类的方法
c.parentMethod() # 调用父类方法
c.setAttr(200) # 再次调用父类的方法 - 设置属性值
c.getAttr() # 再次调用父类的方法 - 获取属性值