• Python入门学习笔记10(类的特殊方法)


    类的内置特殊方法和属性:

    1.__init__(self):构造函数

    2.__del__(self):析构函数

    3.__new__(cls):

    __new__必须有一个cls参数,代表要实例化的类。

    必须有返回值,返回的是实例化出来的对象,可以调用父类的__new__,也可以通过object.__new__创建返回的对象

    #__new__在init前调用
    class Tiger(object):
        def __init__(self,name):
            print("Tiger_init")
            self.name = name
    
        def __new__(cls, *args, **kwargs):
            print("new_start")
            #实际上可以发现如果不返回object的new,那么并不会调用init
            return object.__new__(cls)
    
    tt = Tiger("Tom")
    

    4.__call__(self)

    如果一个类定义了__call__方法,那么该类的实例会变成可调用,既实例可以加上()调用,调用的结果既__call__中的操作

    5.__str__(self)

    自定义打印实例时的返回值

    class A(object):
        def __init__(self):
            pass
        # def __str__(self):
        #     return "我是自定义返回值"
    
    a = A()
    print(a)
    

    如果没有定义__str__,打印的值是a的内存地址,如果定义了__str__,打印的便是__str_的返回值

    __str_的一个实际运用便是自定义异常,https://www.cnblogs.com/Hexdecimal/p/9364477.html

    6.__getitem__(self,key)、__setitem__(key,value)、__delitem__(key)

    通过上面三个特殊方法,可以通过字典的形式向实例中添加、删除一系列的变量

    通过这种方式添加的变量,实际上是存储在实例的一个数据字典类型的实例变量中,具体地赋值、取值、删除通过三个特殊函数对数据字典进行处理,所以类的构造函数中必须定义一个数据字典类型的实例变量。

    class Sample(object):
        def __init__(self):
            self.data = {}
    
        def __getitem__(self, item):
            return self.data.get(item)
    
        def __setitem__(self, key, value):
            self.data[key] = value
    
        def __delitem__(self, key):
            self.data.pop(key)
    
    S = Sample()
    S["name"] = "tiger"#set
    print(S["name"])#get
    del S["name"]#del

    7.__doc__,既自定义在类头部的描述信息

    8.__module__,当前类属于哪个模块

    9.__class__,当前对象属于哪个类

    10.__dict__

    以字典的形式返回类或者实例的所有方法和属性,

    如果是通过实例调用则返回实例属性,

    如果是通过类名调用则返回类属性和方法 

  • 相关阅读:
    day 66
    day 66 作业
    day 65 作业
    day 55 Ajax
    day 56 forms组件
    day 59
    day 58 cookie与session 中间件
    day 54
    day 53
    day 52
  • 原文地址:https://www.cnblogs.com/Hexdecimal/p/9364452.html
Copyright © 2020-2023  润新知