类和实例
类和对象是面向对象编程的两个主要方面。
其中类创建一个新类型,而对象是这个类的实例,类使用class关键字创建。
__init__
方法属于Python语言的构造函数,一个类只能有一个init方法,用于初始化类及其变量。
类的属性和方法
- 类的方法:在类的内部使用def关键字定义一个方法,与一般函数不同,需要包含self参数,且为第一个参数
- 类的私有方法:在类的内部使用,命名格式为
__private_method
,以两个下划线开始,不能在类的外部调用,只能在内部调用
- 类的私有属性:在类的内部使用,也是以两个下划线开头
类的动态属性
如果不希望类的某些属性被悄悄滴访问、赋值和修改,希望在被访问、赋值和修改的时候能得到一些通知,这时可以使用函数property,函数原型为:
1
| property([fget[,fset[,fdel[,doc]]]])
|
有两种方法可以完成这个工作,分别如下所示,其中第二种相对而言更加灵活、方便和简单,推荐使用。
使用类的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class MyClass(object): def __init__(self): self._param = None
def getParam(self): print('get param : %s' % self._param) return self._param
def setParam(self, value): print('set param : %s' % self._param) self._param = value
def delParam(self): print('del param : %s' % self._param) del self._param
parameter = property(getParam, setParam, delParam)
if __name__ == '__main__': cls = MyClass() cls.parameter = 1024 print('current param : %s ' % cls.parameter) del cls.parameter
|
使用@property访问类的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class MyClass(object): def __init__(self): self._param = None
@property def param(self): print('get param : %s' % self._param) return self._param
@param.setter def param(self, value): print('set param : %s' % self._param) self._param = value
@param.deleter def param(self): print('del param : %s' % self._param) del self._param
if __name__ == '__main__': cls = MyClass() cls.param = 1024 print('current param : %s ' % cls.param) del cls.param
|