__getattr__ 和 __getattribute__ 之间的区别

2024-03-25

我试图理解何时定义__getattr__ or __getattribute__. The python 文档 http://docs.python.org/reference/datamodel.html?highlight=__getattribute__#object.__getattribute__提及__getattribute__适用于新式班级。什么是新式课堂?


之间的一个关键区别__getattr__ and __getattribute__就是它__getattr__仅当未按通常方式找到该属性时才调用。它对于实现缺失属性的后备很有用,并且可能是您想要的两个之一。

__getattribute__在查看对象的实际属性之前调用,因此正确实现可能很棘手。你很容易就会陷入无限递归。

新式类源自object,旧式类是 Python 2.x 中没有显式基类的类。但是,在选择时,旧式类和新式类之间的区别并不是重要的。__getattr__ and __getattribute__.

你几乎肯定想要__getattr__.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

__getattr__ 和 __getattribute__ 之间的区别 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 操作栏上没有显示操作按钮? [复制]

    这个问题在这里已经有答案了 我正在关注以下教程开发者 android com http developer android com并尝试在操作栏上添加项目 尽管我添加了所有代码 但搜索操作显示为溢出元素而不是操作按钮元素 我尝试了带有软键盘
  • 从 MySQL 中选择随机行(有概率)

    我有一个 MySQL 表 其中有一行名为 cur odds 它是一个百分比数字 表示该行被选中的百分比概率 例如 当您运行 100 个查询时 如何进行查询以大约该频率实际选择行 我尝试了以下操作 但概率为 0 35 的行最终在大约 60 7
  • 在 cordova/on android 应用程序中,使用 https 的请求失败,但使用 http 的相同请求成功

    我有一个可以通过两个端口访问的后端服务器 一个使用 HTTP 另一个使用 HTTPS 它使用自签名证书 从我的 ionic cordova 混合应用程序中 当我使用 HTTP 请求运行时 它们都成功了 在第一次请求期间 我还添加了基本授权
  • jquery mobile在手机间隙中实现方向改变事件

    有人可以让我知道手机间隙中 jquery mobile 方向改变事件的正确代码吗 我在哪里以及如何实现这个orientationChange函数 window bind orientationchange orientationHandle
  • Python Selenium(等待帧、元素查找)

    我有这些包括 from selenium import webdriver from selenium common exceptions import NoSuchElementException from selenium webdri
  • Python-替换 CSV 文件中的行值

    我有这个数据集 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 XXXX XXXX 0 基本上我想在每次运行程序后将第二
  • Rails 3.0.9 + Devise + Cucumber + Capybara 臭名昭著的“没有路线匹配 /users/sign_out”

    我正在使用 devise 1 4 2 和 Rails 3 0 9 cucumber rails 1 0 2 capybara 1 0 0 我有No route matches users sign out 当我点击注销时出现错误 我添加了
  • 为什么 git stash pop 说它无法从存储条目恢复未跟踪的文件?

    我有很多分阶段和未分阶段的更改 我想快速切换到另一个分支 然后再切换回来 所以我使用以下方法进行了更改 git stash push a 事后看来我可能可以使用 include untracked代替 all 然后 当我去弹出存储时 我收到
  • 子表单根据主表单的ID新建记录

    首先我想说 我是 Access 的初学者 我将感谢我能得到的每一点帮助 我创建了一个表单 显示一个带有三个子表单的表中的记录 记录和子表单具有一对多的关系 我现在正在为每个子表单创建按钮 以便在子表单中创建新记录 我已成功制作按钮并使用宏生
  • 为什么在函数堆栈上返回值不安全

    我在阅读 bruce eckel 时遇到了以下段落 他试图解释为什么函数在堆栈上返回值不安全 现在想象一下如果一个普通函数尝试在堆栈上返回值会发生什么您不能触及返回地址上方堆栈的任何部分 因此该函数必须将值推入返回地址下方 但是当执行汇编语
  • EF核心中的持久数据层,动态EF。将 EF 与模型分开

    我想将 EF 层与我的模型分开 我需要一个 EF Builder 将我的模型发送给它 如下所示 我找到了 mongodb 的代码 但我需要 EF core builder AddMongo builder AddMongoRepositor
  • awk 或 sed CSV 文件操作

    a004 1b North at006754 a004 1c south atytgh0 a004 1d east atrthh a010 1a midwest atyu a010 1b south rfg67 我想打印第一列和第二列 没有
  • 使用 grunt 构建的 Angular 应用程序中缺少资产

    我使用 Yeoman 和 AngularJS 以及所有与之相关的东西 如 Grunt 和 Bower 构建了一个应用程序 当使用本地运行时 一切都完美运行grunt serve 然而 在运行 grunt 并部署应用程序后 有一些丢失的资产
  • 嵌入式 MongoDB 文档在使用 C# 驱动程序保存时未获取 ID

    当我有一个包含文档列表的根文档并且我保存 插入时 根文档总是从 MongoDB 获取 ID 但列表中的文档不会 它们与ObjectId Empty 我不确定我是否做错了什么或者这是否是有意的行为 这是我正在尝试做的事情的一个例子 鉴于课程
  • TSQL 使触发器静默失败

    我在插入后触发器中有一些代码可能会失败 这样的失败并不重要 应该not回滚事务 如何捕获触发器内的错误并让事务的其余部分正常执行 下面的例子说明了我的意思 触发器故意创建一个错误条件 结果是原始插入 1 永远不会插入到表中 Try Catc
  • Bundler 抛出没有这样的文件或目录进行 gem 安装

    在 Gemfile 中 gem backup git gt git github com tenmiles backup git ref gt develop n 本地和分阶段 bundle install确实成功完成了 在生产中 当bun
  • Swift 3:如何捏合缩放和旋转 UIImageView?

    我真的很难在网上找到教程以及已经回答的问题 我已经尝试过它们 但它们似乎不起作用 我的视图中心有一个 UIImageView 我目前可以点击并将其拖动到屏幕上任何我想要的位置 我希望能够通过捏合来缩放和旋转此视图 我该如何实现这一目标 我已
  • TrafficStats 函数始终返回 -1

    当我尝试使用 TrafficStats 类检索流量数据时 TrafficStats getTotalRxBytes and TrafficStats getTotalTxBytes 即使我使用浏览器加载某些网页 函数也总是返回 1 我从一些
  • 在 Java 中使用 Apache Common 的 WhoisClient

    我正在尝试使用 WhoisClient 对象进行 WHOIS 查询 但效果不佳 我的代码非常简单 String WHOIS SERVER WhoisClient DEFAULT HOST int WHOIS PORT 43 String h
  • __getattr__ 和 __getattribute__ 之间的区别

    我试图理解何时定义 getattr or getattribute The python 文档 http docs python org reference datamodel html highlight getattribute obj