专栏首页未闻Code一日一技:在Python中,调用对象不存在的方法时自定义提示信息

一日一技:在Python中,调用对象不存在的方法时自定义提示信息

我们先来定义一个类,People:

class People(object):
    def walk(self):
        print('walk')

现在,我实例化这个类,并调用它的 play方法,由于这个方法不存在,所以现在必定导致报错,如下图所示。

那么,是否能够有一种更加友好的提示方式,告诉调用者,你调用的这个参数不存在?

方法就是下面的代码:

class People(object):
    def __getattr__(self, key):
        def not_find(*args, **kwargs):
            print(f'你调用的方法:{key}不存在!,参数为:{args}, {kwargs}')
        if key in dir(self):
            return getattr(self, key)
        return not_find

    def walk(self):
        print('walk')

运行效果如下图所示。

本文分享自微信公众号 - 未闻Code(itskingname),作者:kingname

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一日一技:如何统计Python函数被调用了几次?

    青南
  • Python 装饰器装饰类中的方法

    目前在中文网上能搜索到的绝大部分关于装饰器的教程,都在讲如何装饰一个普通的函数。本文介绍如何使用Python的装饰器装饰一个类的方法,同时在装饰器函数中调用类里...

    青南
  • 一日一技:跟着Kenneth Reitz大神学习读取类属性的三种方法

    在看Kenneth Reitz大神的Records项目时,注意到在Readme中,读取数据有三种写法:

    青南
  • Day13错误、调试和测试

    错误处理 错误处理机制:try...except...finally... try: print('try...') r = 10/5 ...

    林清猫耳
  • python的上下文管理器

    上下文管理器其实是with语句,这是为了简化try/finally模式,这可以保证一段代码在运行完之后,即使出现错误也能正确的运行。finally的语句用于释放...

    哒呵呵
  • Python进阶:自定义对象实现切片功能

    切片是 Python 中最迷人最强大最 Amazing 的语言特性(几乎没有之一),在《Python进阶:切片的误区与高级用法》中,我介绍了切片的基础用法、高级...

    Python猫
  • 常见的Python面试题

    花了两天时间,整理了一些常见的Python面试题,希望对即将参加招聘面试的或者准备转行的同学有一些帮助,临阵磨枪不快也光,大家加油鸭!

    stormwen
  • 没看完这11条,别说你精通 Python 装饰器

    对于每一个学习 Python 的同学,想必对 @ 符号一定不陌生了,正如你所知, @ 符号是装饰器的语法糖,@符号后面的函数就是我们本文的主角:装饰器。

    猴哥yuri
  • 零基础入门深度学习 | 第三章:神经网络和反向传播算法

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习这个超热的技术,会不会感...

    用户1332428
  • 魔法方法(1)

    在Python中,有些名称很特别,开头和结尾都是两个下划线。我们可能用过一些,如__future__。这样的拼写表示名称有特殊意义,因此绝不要在程序中创建这样的...

    不可言诉的深渊

扫码关注云+社区

领取腾讯云代金券