zoukankan      html  css  js  c++  java
  • python类详细说明、常用内置方法和self的作用

    一、类的定义

    在Python中,一切皆对象,即便是类本身,也是一种type类型的特殊对象。

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def sayHi(self):
            print ('Hello, my name is {}, my age is {}.'.format(self.name, self.age))
    
    print(type(Person)) # 返回值为type

    二、self作用及类的返回值

    类包含属性、方法和id(识别码)。设计类时首先class 类名,随即使用__int__方法(初始化方法,与java构造器相似),最后才是其他的方法。
    其中self表示其类本身,若类本身需要传递形参,形参需要在__int__方法中定义好。

    三、实例化对象

    类必须进行初始化和实例化后,才能使用。实例化的对象相当于另外一个“类”,“继承”了“类”所有所有属性和方法。它在内存中与“类”存放的位置不同。

    类的一大特点是可以复用,即可以多次实例化,每次实例化都会在内存中新增一个实例空间。实例与实例之间没有直接关系。

    # 紧接上边的案例
    tom = Person('tom', 5) # 完成了类的初始化和实例化,形成实例化对象。
    tom.sayHi()
    
    jerry = Person('jerry', 3) # 再次实例化,jerry实例与tom没有直接关系,在内存中占有不同位置。
    jerry.sayHi()

    四、类的常用内置方法/魔法方法

    __init__方法和__del__方法为重要方法,对实例化对象有很大的影响。

    4.1 __dict__字典
    能够查询到类或者实例化对象所包含的所有内置方法,以列表方式进行展示。

    print(Person.__dict__)
    tom = Person('tom', 5)
    print(tom.__dict__)

    4.2 __main__ 主程序
    python使用缩进对齐方式和冒号方式,区分代码间的层次。所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行。
    为了区分是主执行文件还是被调用的文件,python引入了变量__main__,需要执行主程序时,从__main__变量开始。

    # 主程序执行固定写法
    if __name__ == '__main__':
        main()

    4.3  __init__ 初始化方法
    仅仅做初始化用,不能设置返回值。(默认返回值为null)
    若类中不设置__int__,则python将会自动初始化,此做法与java构造器类似。

    # 若不定义__int__,则系统会自动生成以下初始化方法
    # 若__int__中有print字符串,则实例化对象肯定会首先执行此print字符串。
    def __int__(self): pass

    4.4 __str__ 输出字符串
    若类本身希望能够返回的值,才会用这个方法,必须有返回值

    # 紧接上例,在Person类中增加__str__方法
    def __str__(self):
        return 'this is test, return string.'
    
    # 实例化后打印实例本身
    tom = Person('tom', 5)   
    print(tom)

    4.5 __del__销毁对象
    对象销毁前,需要做最后的事情,等所有的类(包括其他类的实例化方法)全部执行完后,实例化对象肯定要执行的事项。

    def __del__(self):
        print('this is del, return {}.'.format(self.name))

    五、类中的各种方法说明

    5.1 普通类方法

    每一个方法中,至少有一个self作为参数,以表示这个是类中的方法。

    5.2 静态方法

    静态方法虽然放到类中,但与类的关系并不紧密,它相当于一个特殊的“类”,单独内存。

    静态方法需要修饰器@staticmethod来标识,告诉解释器这是一个静态方法。

  • 相关阅读:
    解决Spring MVC无法接收AJAX使用PUT与DELETE请求传输的内容
    js中定时器setTimeout与setInterval使用方法经验总结
    解决ajax请求(SpringMVC后台)响应415/400/405错误
    css3 calc()的用法
    echarts2 饼图处理标签文字过长使之达到指定字数换行的目的
    在webstorm开发微信小程序之使用阿里自定义字体图标
    webstorm的一些小技巧
    前端 一些小知识,技巧总结
    用webstorm来开发微信小程序之less的配置
    js,mui,jq 操作基本的DOM
  • 原文地址:https://www.cnblogs.com/fanbao/p/10525845.html
Copyright © 2011-2022 走看看