0%

Python class类

类和实例

类和对象是面向对象编程的两个主要方面。

其中类创建一个新类型,而对象是这个类的实例,类使用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
处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道