看到Python中有一个奇怪的函数名,__init__ 知道带下划线的函数会自动运行,但是不知道它存在的具体含义。。
Python 中的所有类成员(包括数据成员)都是公共的,所有方法都可用。
有一个例外:如果你使用带有双下划线前缀的数据成员名称,例如 __privatevar,Python 的名称管理系统会有效地将其视为私有变量。
所以有一个约定,如果一个变量只在一个类或对象中使用,它应该用一个下划线作为前缀。所有其他名称将是公共的,并且可以被其他类/对象使用。请记住,这只是一个约定,Python 不需要(与双下划线前缀不同)。
同样,注意__del__方法与 destructor 的概念类似。"
突然意识到__init__在类中用作构造函数,固定的写法看似很死板,但实际上是有道理的。
def __init__(self, name):
'''Initializes the person's data.'''
self.name = name
print '(Initializing %s)' % self.name
# When this person is created, he/she
# adds to the population
Person.population += 1
name变量属于对象(它使用self赋值)因此是对象的变量
self.name 的值是基于每个对象指定的,这表明其变量作为对象的性质。
比如我们定义了一个Box类,它具有宽、高、深三个属性,以及一个计算体积的方法:
class Box:
def setDimension(self, width, height, depth):
self.width = width
self.height = height
self.depth = depth
def getVolume(self):
return self.width * self.height * self.depth
b = Box()
b.setDimension(10, 20, 30)
print(b.getVolume())
我们在Box类中定义setDimension方法来设置Box的属性,太麻烦了,而__init__()的特殊方法可以很方便的自己定义类的属性。 __init__() 方法也称为构造函数(constructor)。
class Box:
#def setDimension(self, width, height, depth):
# self.width = width
# self.height = height
# self.depth = depth
def __init__(self, width, height, depth):
self.width = width
self.height = height
self.depth = depth
def getVolume(self):
return self.width * self.height * self.depth
b = Box(10, 20, 30)
print(b.getVolume())
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何使用python自带的IDE10/27
- ♥ 如何使用python函数绘制图像08/22
- ♥ python如何导入图片?08/25
- ♥ 如何在python中卸载包08/25
- ♥ 如何在mac上安装python包09/04
- ♥ 如何在python中换行10/30
内容反馈