• 02. 魔法函数


    Python魔法函数

    Python类置的函数,其函数形式__函数名__,魔法函数不需要去调用,Python解释器会内部调用

    学习代码

    # 魔法函数
    
    class Company:
        """Python类置函数形式,__函数名__, 即为魔法函数
        1. 魔法函数不需要我们去调用,内部会自己调用
        """
    
        def __init__(self, employee_list):
            self.employee = employee_list
    
        def __getitem__(self, item):
            """定义了该函数,将表示该对象可迭代"""
            return self.employee[item]
    
        def __len__(self):
            """当对类使用len(class)时,将首先查找这个魔法函数,如果找不到就会再去找 __getitem__
            的长度 只对 切片后的实例长度显示
            """
            return len(self.employee)
    
        def __repr__(self):
            """交互时开发模式用到, 定义输入类后显示的内容"""
            return "<__repr__>".join(str(self.employee))
    
        def __str__(self):
            """非交互式开发模式用到,目的定义print后返回的内容"""
            return "<__str__>".join(str(self.employee))     # [<__str__>1<__str__>,<__str__> <__str__>2<__str__>,<__str__> <__str__>3<__str__>]
    
    
    if __name__ == '__main__':
        company = Company([1, 2, 3])
        company1 = company[1:2]
        """注释了__len__, 如果不注释__len__都能正常运行 3, 1"""
        print(len(company))  # TypeError: object of type 'Company' has no len()
    
        # len()将去调用类中的__len__函数
        print(len(company1))  # 1
    
        # __str__没定义时将找__repr__,没找到时就 输出 <__main__.Company object at 0x0000023897E86460>
        print(company)
        #
        # # TypeError: 'Company' object is not iterable 注释了__getitem__将表示该对象无法迭代
        # for i in company:
        #     print(i)
    
    
  • 相关阅读:
    Android开发学习笔记-SharedPreferences的用法
    Android开发学习笔记-自定义组合控件
    webpack 4 教程
    react 生命周期图解
    git 操作说明
    echars 3.0 去掉柱状图阴影用什么属性
    react——Table组件
    antd ——按钮
    react——Table组件列中靠左 靠右对齐解决方案
    react中异步的使用
  • 原文地址:https://www.cnblogs.com/zy7y/p/14191932.html
Copyright © 2020-2023  润新知