美文网首页
类和对象

类和对象

作者: CaesarsTesla | 来源:发表于2017-04-03 16:17 被阅读26次

    1、基本使用

    class MyClass(object):
        message = 'Hello Developer'
    
        def show(self):
            print(self.message)
    
    def main():
        print(MyClass.message)
    
        MyClass.message = 'Hello mudy'#修改成员变量
        print(MyClass.message)
    
        inst = MyClass()#实例化一个MyClass的对象
        inst.show()
    
    if __name__ == '__main__':
        main()
    
    Hello Developer
    Hello mudy
    Hello mudy
    
    
    • 类名为MyClass
    • 该类中定义了一个成员变量message,并对其赋了初始值
    • 类中定义了成员函数show(self),注意类中的成员函数必须要带参数self
    • 参数self是对象本身的引用,在成员函数体可以引用self参数获得对象的信息

    2、构造函数
     构造函数是一种特殊的类成员方法,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值。Python中的类构造函数用__init__命名,为MyClass添加构造函数方法,并实例化一个对象。

    class MyClass(object):
        message = 'Hello ,Developer'
    
        def show(self):
            print(self.message)
    
        def __init__(self):#构造函数在MyClass被实例化时被Python解释器自动调用,
            print('构造函数被调用')
    
    def main():
        inst = MyClass()
        inst.show()
    
    if __name__=='__main__':
         main()
    
    构造函数被调用
    Hello ,Developer
    
    • 默认参数
    
    class MyClass:
        message = 'Hello Developer'
    
        def show(self):
            print(self.message)
    
        def __init__(self,name='mudy',age='18'):
            print('构造函数被调用了,参数是',name,' ',age)
    
    def main():
        inst = MyClass()
        inst.show()
    
        inst2 = MyClass('huy')
        inst2.show()
    
        inst3 = MyClass('dabao','17')
        inst3.show()
    
        inst4 = MyClass(age='20')
        inst4.show()
    if __name__ == '__main__':
        main()
    
    构造函数被调用了,参数是 mudy   18
    Hello Developer
    构造函数被调用了,参数是 huy   18
    Hello Developer
    构造函数被调用了,参数是 dabao   17
    Hello Developer
    构造函数被调用了,参数是 mudy   20
    Hello Developer
    

    注意:在构造函数中不能有返回值
     在Python中不能定义多个构造函数,但可以通过为命名参数提供默认值的方式达到利用多种方式构造对象的目的。

    3、析构函数

     析构函数是构造函数的反向函数,在销毁(释放)对象时将调用它们。析构函数往往用来做“清理善后”的工作,例如数据库链接对象可以在析构函数中释放对数据库资源的占用。Python中为类定义析构函数的方法是在类中定义一个名字为__del__的没有返回值和参数的函数。
     与Java类似,Python解释器的堆中存储着正在运行的应用程序所建立的所有对象,但是他们不需要程序代码来显示地释放,因为Python解释器会自动跟踪他们的引用计数,并自动销毁(同时调用析构函数)已经没有被任何变量引用的对象,在这种场景中,开发者并不知道对象的析构函数何时会被调用,同时Python提供了显示销毁对象的方法:使用del关键字。

    class MyClass(object):
        message = 'Hello Developer'
    
        def show(self):
            print(self.message)
    
        def __init__(self,name='mudy',age='18'):
            print('构造函数被调用,参数是',name,age)
    
        def __del__(self):
            print('析构函数被调用')
    def main():
        inst = MyClass()
        inst.show()
    
        inst2 = MyClass('huy')
        inst2.show()
    
        del inst,inst2
    
        inst3 = MyClass('huy','18')
        inst3.show()
        del inst3
    if __name__ == '__main__':
        main()
    
    构造函数被调用,参数是 mudy 18
    Hello Developer
    构造函数被调用,参数是 huy 18
    Hello Developer
    析构函数被调用
    析构函数被调用
    构造函数被调用,参数是 huy 18
    Hello Developer
    析构函数被调用
    

    如果不手动del,则输出结果如下:

    构造函数被调用,参数是 mudy 18
    Hello Developer
    构造函数被调用,参数是 huy 18
    Hello Developer
    构造函数被调用,参数是 huy 18
    Hello Developer
    析构函数被调用
    析构函数被调用
    析构函数被调用
    

    相关文章

      网友评论

          本文标题:类和对象

          本文链接:https://www.haomeiwen.com/subject/aqqoottx.html