第六章 面向对象程序设计-整理
6.1 类的定义与使用
数据成员:创建类时用变量形式表示对象特征的成员
成员方法:用函数形式表示对象行为的成员
面向对象程序设计的3个要素:封装、继承和多态
class Car(Object):
def showInfo(self):
print("This is a car")
6.2 数据成员与成员方法
6.2.1 私有成员与公有成员:
class Test:
def __init__(self, value=0): #构造方法,创建对象时自动调用
self.__value = value #私有成员数据
def setValue(self, value): #共有成员方法
self.__value = value #在类的内部可以直接访问私有成员
def show(self): #成员方法,公有成员
print(self.__value)
6.2.1 数据成员
数据成员用来描述类或对象的某些特征或属性
属于对象的数据成员:主要在构造方法__init__()中定义
在定义和在实例方法中访问成员时往往以self作为前缀
同一个类的不同对象的数据成员之间互不影响属于类的数据成员:
不在任何成员方法之内,是该类所有对象共享的
不属于任何一个对象
6.2.3 成员方法
class Root:
__total = 0
def __init__(self, v): #构造方法
self.__value = v
Root.__total += 1
def show(self): #普通实例方法,以self作为第一个参数
print('self.__value:',self.__value)
print('Root.__total:',Root.__total)
@classmethod #修饰器,声明类方法
def classShowTotal(cls): #类方法,一般以cls作为第一个参数
print(cls.__total)
@staticmethod #修饰器,声明静态方法
def staticShowTotal(): #静态方法,可以没有参数
print(Root.__total)
r = Root(3)
r.classShowTotal() #通过对象来调用类方法
r.staticShowTotal() #通过对象来调用静态方法
rr = Root(5)
rr.classShowTotal() #通过类名调用类方法
rr.staticShowTotal() #通过类名调用静态方法
6.2.4 属性
class Test:
def __init__(self, value):
self.__value = value
def __get(self): #可读
return self.__value
def __set(self, v): #可修改
self.__value = v
def __del(self): #可删除
del self.__value
value = property(__get, __set, __del)
def show(self):
print(self.__value)
6.3 继承
父类或基类:已有的、设计好的类
子类或派生类:新设计的类
派生类可以继承父类的公有成员,但是不能继承其私有成员
如果要在派生类中调用基类的方法,可以使用内置函数super()或者通过“基类名.方法名()”的方式