- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用内置的 dir 获取 ENUM 类变量。对于普通类,我们得到以下结果,
from enum import Enum
class foo(Enum):
a = 1
b = 2
c = 3
>>> dir(foo)
['__class__', '__doc__', '__members__', '__module__', 'a', 'b', 'c']
但是如果我稍微调整这个类以使用点运算符获取字典值,如下所示,
class foo(Enum):
class DotDict(dict):
# Use this to access the dictionary elements using dot notation
def __getattr__(*args):
val = dict.get(*args)
return DotDict(val) if type(val) is dict else val
__setattr__ = dict.__setitem__
__delattr__ = dict.__delitem__
# class variables
a = DotDict({'index': 1, 'city': {'name': 'NY', 'len': 2}})
b = DotDict({'index': 2, 'city': {'name': 'London', 'len': 6}})
c = DotDict({'index': 3, 'city': {'name': 'Delhi', 'len': 5}})
我得到以下结果,不包含类变量,
>>> dir(foo)
['DotDict', '__class__', '__doc__', '__members__', '__module__']
这里有一件奇怪的事情是我仍然可以像下面这样访问类变量,
>>> foo.a.index
1
>>> foo.b.city.name
London
我不知道类对象无法访问类变量的确切原因。有什么方法可以像使用内置的 dir 一样获取上述类的整个类变量列表?
最佳答案
在 3.x 早期的某个地方,dir()
可以作为类上的 __dir__
方法实现,Enum
利用了这一点其中仅显示四个 __xxx__
属性和任何成员。
a
、b
和 c
没有出现在 dir(foo)
中的原因是因为他们不是成员,他们不是成员是因为 DotDict.__getattr__()
坏了。
__getattr__
对缺少属性的适当响应是引发 AttributeError
,但您的响应是返回 DotDict
实例和搜索名称,添加 print()
时可以看出:
>>> a.__get__
({'a': 1}, '__get__')
这很重要,因为描述符不会转换为成员,__get__
、__set__
或 __delete__
的存在表示描述符.
长话短说
修复你的 __getattr__
,一切都应该按预期工作。
关于 python : ENUM class elements are not reachable for built-in dir() function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56561060/
我在开发 iPhone 应用程序时遇到了一次非常奇怪的崩溃。似乎每次我向 friend 展示我的应用程序时它都会崩溃,但否则它永远不会崩溃。在对墨菲定律感到困惑之后,我确定了事故的模式——纽约地铁。使
我正在创建一个 iPhone 应用程序,我正在使用 RestKit api 连接到服务器。每当我将 Reachability.m 和 Reachability.h 添加到项目的第二个 UIViewCo
我使用了Andrew's修改后的Reachability类。 -(void)viewDidLoad [[NSNotificationCenter defaultCenter] postNotifica
我正在使用更新的 Reachability库来测试互联网连接是否可达。我尝试记录一条消息以防无法访问互联网,但日志不调试: //Test the internet connection Reachab
我使用 Reachability 检查我的应用程序的网络状态,除了在 iOS 9.0.1 或更高版本中 reachableBlock 和 unreachableBlock 被调用两次外,一切正常,这给
我需要在我的 iPhone 项目中测试网络可达性。使用哪个项目更好? Reachability与 UIDevice-Reachability 最佳答案 可达性(如果您唯一的问题是测试网络可达性)。这是
我看到论坛上有很多关于Apple的Reachability Class的条目,但我还没有看到这个的解决方案。 我正在开发一个 VoIP 应用程序,需要在后台模式下实时检测连接变化。 SCNetwork
使用 Reachability Class(来自 Apple)来检查远程主机的可用性是否明智?例如,www.google.com 或者我应该使用 NSString *connectedString =
我试图将使用 rebar 构建的 REST API 示例转换为 rebar3 版本( http://jordenlowe.com/title/Explain_like_I_am_5_-_Erlang_
我正在尝试将 Reachability.swift 更新到 swift 3.0,但在将 Reachability 实例传递给回调函数时遇到问题。 这是我的片段:* 请注意 self = 可达性等级 v
我在代码中使用了 Apple 的可达性类。下面是appdelegate的代码 NSNotificationCenter.defaultCenter().addObserver(self
有时我必须检查互联网连接并为此使用“可达性”。 最好使用“可达性”手动检查互联网连接,例如: BOOL status = ([[Reachability reachabilityForInternet
我在这个应用程序的几个 View 中使用了 AFNetworking Reachability。一种观点认为,存在奇怪的问题。在每个 View 中,我都在 loadView 中开始监控:[[AFNet
在 CI 系统中,我使用 valgrind 运行一堆测试,如果 valgrind 没有发现错误,我期望返回值 0,否则返回 1。测试本身成功运行并返回 0。 这就是 error-exitcode 的用
我想在我的应用程序中使用 ReachabilitySwift 类。我在我的 podFile 中添加了依赖项,我从 github 获取了代码. 我遇到了这个错误: 不能在这一行调用不带参数的 'Reac
我正在尝试在我的应用中实现可达性。我在 applicationDidFinishLaunching 中有它。如果我的连接真的很糟糕并且我启动了应用程序,Reachability 会一直持续并且经常使应
我正在使用 Apple 提供的可达性示例代码来检查网络连接并获得更改通知 (Reachability Sample code)。 我查看了我的应用程序的一些崩溃锁。似乎有些崩溃是由于 Reachabi
Apple 名为 Reachability 的示例应用展示了如何检测连接。如果您只有 wifi 而没有互联网,该应用会在下面的第二行停顿一分钟以上: SCNetworkReachabilityFlag
我目前正在使用此检查 viewDidLoad 上的网络连接: -(BOOL)reachable { ReachabilityDRC *r = [ReachabilityDRC reachabi
使用 Reachability 比下面的代码有什么优势?我觉得 Reachability 的代码量很大,但如果它在任何方面都更好,那么我会改用它。 NSString *connectionString
我是一名优秀的程序员,十分优秀!