为什么我要写这篇呢,之前有很多小伙伴在运行代码时遇到了各种各样的问题,甚至有这样的一句话,编程一小时,找错一整天,所以小卡今天就整理了一下日常常见的几种报错类型,come~ 首先我们来说一下错误和异常,...什么是异常呢,异常就是程序运行时,某一句引发错误导致之后的代码都无法运行,是不是有点丛林大盗的感觉,此山是我开,此树是我栽,哎呀呀~ 在Python无法正常处理程序时就会发生一个异常。...值错误,输入的数据类型跟要求的不符合 NameError:name 'a' is not defined 未初始化对象,变量没有被定义 AttributeError:'tuple' object...has no attribute 'remove' 属性错误,该对象没有这个属性、方法,请检查一下数据类型,例如元组没有append属性 SystemExit 解释器请求退出,出现在exit()...Python在执行程序时,检测到错误,触发异常,在异常触发后且没有处理的情况下,程序会立即在当前异常处停止,后面的代码就不会运行,那么我们的程序就会直接崩溃,弱不禁风,所以你必须提供一种异常处理机制来增强你程序的健壮性与容错性
__', '__subclasshook__', '__weakref__', '_bar', 'foo'] 以上是这个对象属性的列表。...__baz AttributeError: "'ExtendedTest' object has no attribute '__baz'" 等一下,当我们尝试查看t2 .__ baz的值时,为什么我们会得到...事实证明,这个对象甚至没有__baz属性: dir(t2) ['_ExtendedTest__baz', '_Test__baz', '__class__', '__delattr__', '_...我一直使用Python,有很多年了,但是像这样的规则和特殊情况并不总是浮现在脑海里。 有时候程序员最重要的技能是“模式识别”,而且知道在哪里查阅信息。如果您在这一点上感到有点不知所措,请不要担心。...但是,为了使拆分表达式成功运行,我需要将包含在元组中的所有值分配给变量。
11.问:在我的代码中x是一个列表,我使用y=x.sort()语句把它排序后的结果赋值给y,然后使用y.index(3)查看3在y中的下标时,为什么会提示“AttributeError: 'NoneType...15.问:运行代码时提示“AttributeError: 'list' object has no attribute 'add'”,为什么呢?...19.问:已知x是一个字符,我想使用x+1得到下一个字符,为什么提示“TypeError: can only concatenate str (not "int") to str”呢?...21.问:我的代码可以运行,但是结果不对,怎么办呢? 答:代码可以运行表示没有语法错误,不代表没有逻辑错误。...答:应该是文件具有“只读”之类的特殊属性,或者当前登录的用户账号没有权限访问该文件。 24.问:我机器上明明是有test.txt这个文件的,为什么使用内置函数open()打开时提示文件不存在呢?
上一篇python协程1:yield的使用介绍了: 生成器作为协程使用时的行为和状态 使用装饰器预激协程 调用方如何使用生成器对象的 .throw(…) 和 .close() 方法控制协程 这一篇将介绍...生成器对象会抛出StopIteration异常。异常对象的value属性保存着返回值。...result = exc.value ...>>> result Result(count=3, average=30) 看到这我们会说,这是什么鬼,为什么获取返回值要绕这么一大圈,就没有简单的方法吗?...# 3 如果调用的方法抛出StopIteration异常,获取异常对象的value属性,赋值给_r _r = _e.value else: while 1: # 4 运行这个循环时,委派生成器会阻塞...如果调用的方法抛出StopIteration异常,获取异常对象的value属性,赋值给_r, 退出循环,委派生成器恢复运行。任何其他异常都会向上冒泡,传给委派生成器。
② 每个属性都用构造函数进行了注释。这里我使用了内置类型。 ③ 必须使用关键字参数创建Movie实例。 ④ 作为回报,您会得到一个漂亮的__repr__。...该顶层代码可以执行任何操作,包括典型的“运行时”操作,例如写入日志或连接到数据库。¹²这就是为什么“导入时间”和“运行时”之间的边界模糊:import语句可以触发各种“运行时”行为。...__new__运行之前,您必须向cls_dict添加的一个属性是__slots__,如“为什么 init_subclass 无法配置 slots”中讨论的那样。...截至 2021 年,CPython 的每个活跃维护版本都支持刚才列出的所有功能。 我一直在倡导这些特性,因为我看到我们行业中有太多不必要的复杂性,而元类是复杂性的入口。...这是社区最好的一个例子:在第一版中写关于asyncio时,我感到沮丧,因为 API 有许多函数,其中几十个是协程,你必须用yield from调用协程—现在用await—但你不能对常规函数这样做。
# AttributeError: 'Person' object has no attribute 'name'\ # print(p1.name, p1.age, p1.gender) # 为什么没有属性呢...18 女 p2 = Person() # AttributeError: 'Person' object has no attribute 'name' # 哪怕是在类的内部添加实例属性,两个对象之间没有任何关系...在其引用地址位置添加了对应的实例属性 # 在类的内部使用self,其实也代表该应用地址,也是在其应用地址位置添加了对饮的实例属性 # 为什么在类的内部要使用self 而不使用对象名?...,就需要添加其属性,这个时候,没有办法获取对象的名称. 2、__init__()方法 __init__()方法在对象创建完成后,初始化对象时,自动调用 在init方法中添加的属性,由于每个对象都会执行该方法...,但是所有的对象包含的属性类别相同 # 这种形式下一定要给每一个对象单独赋值,或者给init方法中的属性一些默认值,否则会报错 4、__str__()方法 在类的内部实现__str__()方法,他会在我们讲对象转换为
dir and vars: 一切都是字典 你有没有想过Python如何存储对象,它们的变量及方法?我们知道所有对象都有自己的属性和方法,但是Python究竟如何跟踪它们呢?...既然我已经提到了继承,我想我也应该详细说明“方法解析顺序(method resolution order,MRO)”是如何工作的。 简而言之,MRO 是对象从中继承属性和方法的类的列表。...getters 和 setter 提供了一种在尝试读取或修改对象的属性时添加验证或运行一些额外代码的方法。...这是通过将属性转换为一组函数来完成的:一个函数在您尝试访问属性时运行,另一个函数在您尝试更改其值时运行。...老实说,描述符是一个非常高级的主题,以至于试图在这里涵盖它除了已经被告知的内容之外没有任何用处。我计划在将来的某个时候写一篇关于描述符及其用法的详细文章,所以请继续关注!
我准备讲类相关的知识了,这些可是我课后自学的哦~” 小张转了转身,一念间就留了下来~ 3.1.动态添加属性和方法 类相关的基础知识如果忘记,可以查看之前的文章:https://www.cnblogs.com...,动态添加属性,还有没有啥我不知道的知识了?"...小张沉默不语,默默的看着小明讲课,随后心里想到:“这个坑货,话也不说全,还好现在是夏天,不然我早着凉了” 要想添加其他实例都可以访问的属性,可以给类添加一个类属性,用法和上面差不多,只是把对象改成类。...有没有办法限制一下呢? 小明哈哈一笑,娓娓道来: 1.指定实例属性 如果我们想要限制实例的属性怎么办?比如,只允许添加指定属性和方法?...Python的引用计数算法不能够处理互相指向自己的对象。 这就是为什么Python要引入Generational GC算法的原因! Python使用一种不同的链表来持续追踪活跃的对象。
__', '__subclasshook__', '__weakref__', '_bar', 'foo'] 以上是这个对象属性的列表。...__baz AttributeError: "'ExtendedTest' object has no attribute '__baz'" 等一下,当我们尝试查看t2 .__ baz的值时,为什么我们会得到...事实证明,这个对象甚至没有__baz属性: >>> dir(t2) ['_ExtendedTest__baz', '_Test__baz', '__class__', '__delattr__', '...我一直使用Python,有很多年了,但是像这样的规则和特殊情况并不总是浮现在脑海里。 有时候程序员最重要的技能是“模式识别”,而且知道在哪里查阅信息。如果您在这一点上感到有点不知所措,请不要担心。...但是,为了使拆分表达式成功运行,我需要将包含在元组中的所有值分配给变量。
调试Python程序时,经常会报出一些异常,不管我们是启动程序,或者调用接口,总不是100%的成功,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点...print(e) except ValueError as e: print(e) else: print('try内没有异常') finally: print('无论异常与否,都会执行我...模块,此时获取的信息最全,与python命令行运行程序出现错误信息一致。...StopIteration # 迭代器没有更多的值 +-- StopAsyncIteration # 必须通过异步迭代器对象的__anext__()方法引发以停止迭代 +-...# 属性引用或赋值失败 +-- BufferError # 无法执行与缓冲区相关的操作时引发 +-- EOFError # 当input()函数在没有读取任何数据的情况下达到文件结束条件
__', '__subclasshook__', '__weakref__', '_bar', 'foo'] 以上是这个对象属性的列表。...__baz AttributeError: "'ExtendedTest' object has no attribute '__baz'" 等一下,当我们尝试查看t2 .__ baz的值时,为什么我们会得到...事实证明,这个对象甚至没有__baz属性: >>> dir(t2) ['_ExtendedTest__baz', '_Test__baz', '__class__', '__delattr__', '_...我一直使用Python,有很多年了,但是像这样的规则和特殊情况并不总是浮现在脑海里。 有时候程序员最重要的技能是“模式识别”,而且知道在哪里查阅信息。如果您在这一点上感到有点不知所措,请不要担心。...但是,为了使拆分表达式成功运行,我需要将包含在元组中的所有值分配给变量。
__delarttr__: __getattr__: 会在对象.属性时,“属性没有”的情况下才会触发。对象....# def __getattr__(self, item): # print('只有对象获取一个没有的属性值得时候触发我!')...def __getattribute__(self, item): print('类或对象无论获取的属性有没有都会触发我!...'zhang' # 触发__setattr__ # del u.x # 对象不能删除掉类中的属性,但只要执行删除操作,都会触发__delattr__的执行 __str__: 会在打印对象时触发。...def __str__(self): print('对象被打印的时候触发我!') return '必须要写return返回一个字符串!
因为DataFrame是Pandas库中的一个二维数据结构,它的数据类型和操作方法与列表不同,所以没有直接的.tolist()方法。 在下面的文章中,我们将讨论如何解决这个错误。...但是,当我们运行这段代码时,会抛出AttributeError: 'DataFrame' object has no attribute 'tolist'的错误。...运行上述代码,输出结果如下:plaintextCopy code['张三', 18, 95]['李四', 20, 80]['王五', 19, 85]该示例展示了一个实际应用场景,将包含学生信息的DataFrame...需要注意的是,.tolist()方法不同于其他常用的DataFrame方法,例如.values属性返回的是一个numpy.ndarray对象,而不是列表。...所以,如果想要得到嵌套列表形式的数据,就需要使用.tolist()方法。
所以stu3 = stu2这样的赋值语句并没有创建新的对象,只是用一个新的变量保存了已有对象的地址。...(2) 我们可以通过给Student类添加__init__方法的方式为学生对象指定属性,同时完成对属性赋初始值的操作,正因如此,__init__方法通常也被称为初始化方法。...需要提醒大家的是,Python并没有从语法上严格保证私有属性的私密性,它只是给私有的属性和方法换了一个名字来阻挠对它们的访问,事实上如果你知道更换名字的规则仍然可以访问到它们,我们可以对上面的代码稍作修改就可以访问到私有的属性...对象方法、类方法、静态方法都可以通过类名.方法名的方式来调用,区别在于方法的第一个参数到底是普通对象还是类对象,还是没有接受消息的对象。...静态方法通常也可以直接写成一个独立的函数,因为它并没有跟特定的对象绑定。
我们编写程序通常使用开发工具编写,比如:我使用 Pycharm 工具编写 Python 程序,像这种语法错误,在编写程序时,编译器就会检测出来并提示我们,因此,我们编写好的程序几乎不会出现这种问题。...断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类 IOError 输入/输出操作失败...) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) UnboundLocalError...访问未初始化的本地变量 ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象 RuntimeError 一般的运行时错误 NotImplementedError...; 如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中; 如果最终仍找不到对应的处理语句,它就成为一个 未处理异常,终止程序运行,显示提示信息。
对象,因此就提高了运行效率。...4.2 属性成员的搜索原则:原型链 了解了 构造函数-实例-原型对象 三者之间的关系后,接下来我们来解释一下为什么实例对象可以访问原型对象中的成员。...如果一直到原型链的末端还没有找到,则返回 undefined。 4.3 实例对象读写原型对象成员 读取: 先在自己身上找,找到即返回。 自己身上找不到,则沿着原型链向上查找,找到即返回。...如果一直到原型链的末端还没有找到,则返回 undefined。 值类型成员写入(实例对象.值类型成员 = xx): 当实例期望重写原型对象中的某个普通数据成员时实际上会把该成员添加到自己身上。...如果一直到原型链的末端还没有找到该成员,则报错(实例对象.undefined.xx = xx)。
前言 运行程序时经常遇到各种错误,例如:ImportError(导入模块错误)、IndexError(索引错误)、NameError(变量错误)、SyntaxError(语法错误)、IndentationError...(缩进错误)等,你或许有许多疑问,为什么程序出现这个错误就会打印出相应的错误信息,自己是否可以编写一个错误呢?...Python异常 1.1 异常的名词解释 异常其实是一个Python对象,当Python无法正常处理程序时,就会实例化这个对象,从而抛出异常(表示一个错误) 1.2 异常捕捉 当程序出现异常时,如果不处理则会终止程序的运行...对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误的基类...(没有属性) UnboundLocalError 访问未初始化的本地变量 ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
大家对我解读属性访问的博客文章反应热烈,这启发了我再写一篇关于 Python 有多少语法实际上只是语法糖的文章。在本文中,我想谈谈二元算术运算。 具体来说,我想解读减法的工作原理:a - b。...我故意选择了减法,因为它是不可交换的。这可以强调出操作顺序的重要性,与加法操作相比,你可能会在实现时误将 a 和 b 翻转,但还是得到相同的结果。...这很像我写属性访问的文章 里的__getattribute__(),特殊/魔术方法是根据对象的类型来解析的,并不是出于性能目的而解析对象本身;在下面的示例代码中,我使用_mro_getattr() 表示此过程...如果没有上述规则,Spam() - Bacon() 将得到 LessSpam,因为 Spam 不知道减掉 Bacon 应该得出 VeggieSpam。...# 一个创建闭包的函数,实现了二元运算的逻辑 _MISSING = object() def _create_binary_op(name: str, operator: str) -> Any:
然而,_wrap_close却定义了__getattr__()魔法方法,这样所有其他找不到的属性、方法就会传递给self._stream对象,而这个对象有__next__()方法。这就解释了为什么r....foo的字符串依然是原来的默认值,没有改变。...__str__方法。 下面这段是额外的思考,可能比较绕: 再回头去看最开始的例子,这个问题之所以奇怪,是因为它用了__getattr__()让实例获得了并不存在于类中的属性。...也就是说,原来的类并没有获得这些额外的属性。而魔法行为的判断是基于类中是否有这个魔法方法。...我用 Python 的时间不可谓不短,也自认对 Python 的语言特性比较了解了,但 Python 却总能时不时让我意外一下,这是什么情况?
领取专属 10元无门槛券
手把手带您无忧上云