问题标签 [hasattr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2079 浏览

python - 如何测试python类父级是否定义了方法?

我有一个可能定义了方法“method_x”的子类。我想知道“method_x”是否在类层次结构的其他地方定义。

如果我做:

我将得到一个真值,它还查看为子类定义的任何方法。我如何将其限制为仅询问该方法是否在类链的上层定义?

0 投票
1 回答
2519 浏览

python - Python 的 hasattr 有时会返回不正确的结果

为什么hasattr说实例没有foo属性?

我期望:

0 投票
2 回答
7974 浏览

python - 如何稳健地检查 Python 属性是否存在?

给定以下类(具有错误属性),那么检查该bar属性是否存在的最佳万无一失的方法是什么?

两者都hasattr失败getattr并且仅dir有效:

我能想到的最好的全方位解决方案是:

有没有更好的办法?

0 投票
1 回答
219 浏览

python - hasattr 为应用程序引擎 ndb 实体返回始终 True

将此答案应用于我的项目

这是我的 ndb 实体,is_deleted 稍后添加。

当我用 logging.info 打印我的实体时,我有

当我为做做

但是当我这样做时:

我究竟做错了什么?

0 投票
0 回答
44 浏览

python - 为什么 lib.__dict__(vars) 只在运行 hasattr 或 getattr 后显示一个对象?

这是示例代码:

结果是:

我发现如果没有该行的代码

打印结果低于不包括'EVP_get_cipherbyname'

有人可以解释为什么吗?

0 投票
1 回答
1089 浏览

python-3.x - 如何通过 getattr() 使用动态方法调用返回值

我有一个名为运行while循环命令提示符的类,我正在使用dir()getattr()为命令shell动态创建方法列表。我想返回值,但是从动态调用的方法返回只是退出到主循环,为什么我该如何解决这个问题?

0 投票
2 回答
1769 浏览

python - 函数 'hasattr()' 在 Python 中无法正常工作

函数 'hasattr()' 在 Python 中无法正常工作

我有以下代码:

当我运行它时,它给了我输出:hasn't.
我不明白如何检查该属性是否存在。我之前
尝试删除,但它不起作用。 如何解决?uBrazil

0 投票
1 回答
1326 浏览

python - 使用 getattr 调用单独类中的函数

我可能正在尝试做一些超出这里可能性范围的事情,但我想在放弃希望之前我会先问清楚。所以这里...

我有 2 个类,A 和 B。每个类都有任意数量的函数。B 类将在 A 类的某处实例化,A 类将通过该实例化使用 B 类函数之一。B 类中的函数将需要使用 A 类的当前实例化数据来引用 A 类的一个或多个函数。

A级

B类:

我收到以下错误:

getattr(the_class, function_name)()

TypeError:未绑定的方法 foo() 必须以 classA 实例作为第一个参数来调用(反而什么都没有)

谢谢!

0 投票
2 回答
484 浏览

python - 检测 __getattribute__ 调用是否是由于 hasattr

我正在为一个班级重新实施__getattribute__

我想注意提供属性的任何不正确(当然意味着失败)失败(因为__getattribute__实现结果非常复杂)。为此,如果我的代码在引发AttributeError.

我意识到:

  1. __getattribute__鼓励实现尽可能简单。
  2. __getattribute__根据调用的方式/原因,实现的行为不同被认为是错误的。
  3. 访问属性的代码也可以try/except代替使用hasattr.

TL; DR:不过,我想检测是否__getattribute__由于hasattr(与访问属性的“真正”尝试相比)完成了调用。

0 投票
1 回答
657 浏览

python - Python 3 - 在不调用 __getattr__ 的情况下检查类属性

TL;DR:是否有hasattr不触发属性获取器的替代方法?

我正在为一些现有代码编写 Python 接口,我在其中获取和设置各种形状和截面类的值。由于有大量可能的组合,我目前动态创建新类,子类化一个SectionHandler类和形状类,例如Circle. 每个都有我想保留的特定方法。

由于此 API 将在脚本中以交互方式使用,我想确保在类实例化之后修改的任何属性都已经存在(这样就不能从拼写错误中创建新属性,并且在指定不存在的属性时会警告用户)。由于此检查需要“跳过”在子类化期间添加的所有新属性,因此我使用type函数中的属性字典将属性预加载到新类中(下面由nameandindex属性表示)。

正如此 SO post中所建议的,我正在hasattr通过覆盖来检查属性是否存在于创建的类中。这在属性不存在但问题是属性确实存在时有效 - 因为似乎通过调用属性 getter 来工作,所以我从 getter 收到无关的日志记录调用,这会污染许多属性修改的日志(尤其是对于较长的消息)。__setattr__hasattr

是否有另一种方法来检查动态生成的类中的类属性?我尝试查找self.__dict__而不是使用hasattr,但该字典在创建类时为空。有哪些选择?

我试图给出一个反映我正在使用的结构的最小工作示例: