知行编程网知行编程网  2022-11-05 23:30 知行编程网 隐藏边栏  0 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python中的__init__到底是干什么的?的相关知识,希望可以帮到处于编程学习途中的小伙伴

Python 中的 __init__ 到底是做什么的?

看到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())

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享