Python构造与析构函数

来自CloudWiki
跳转至: 导航搜索

构造与析构函数

构造方法(函数)

构造方法__init__(self,....)在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。如果用户自己没有重新定义构造方法,系统就自动执行默认的构造方法。


class Person:
    def __init__(self,n,a):
        self.name=n
        self.age=a

if __name__ == "__main__":
    p=Person("xxx",20)
    print(p.name,p.age)

注:python之中构造函数在一个类之中只能定义一个并且需要写在类代码块最上方,而且python类的构造函数只能够命名为__init__()这样的形式,表示它是一个属于该类的私有方法。

析构方法(函数)

析构方法__del__(self)在释放对象时调用,可以在里面进行一些释放资源的操作,不需要显示调用。

class Animal:
    def __del__(self):
        print("销毁对象{0}".format(self))
cat = Animal()
cat2 = Animal()
del cat2
print("程序结束")


结果:


销毁对象<__main__.Animal object at 0x000000E0D4B59EC8>
程序结束

构造函数__init__是完成对象初始化

class Person:
    def __init__(self,n,g,a):
        self.name=n
        self.gender=g
        self.age=a
 
    def show(self):
        print(self.name,self.gender,self.age)

if __name__ =="__main__": 
    p=Person("james","male",21)
    p.show()

结果:

james male 21

构造函数__init__中设置默认参数

class Person:
    def __init__(self,n="",g="male",a=0):
        self.name=n
        self.gender=g
        self.age=a
 
    def show(self):
        print(self.name,self.gender,self.age)

if __name__ == "__main__":
 
    a=Person("james")
    b=Person("james","female")
    c=Person("james","male",20)
    a.show()
    b.show()
    c.show()