问题标签 [python-datamodel]
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.
python - 你如何检查一个python方法是否被绑定?
给定一个方法的引用,有没有办法检查该方法是否绑定到一个对象?您还可以访问它绑定到的实例吗?
python - Python 中的元类是什么?
在 Python 中,什么是元类,我们用它们做什么?
python - 是否有一个内置函数可以打印对象的所有当前属性和值?
所以我在这里寻找的是 PHP 的print_r函数。
这样我就可以通过查看相关对象的状态来调试我的脚本。
python - 如何获取方法参数名称?
给定 Python 函数:
如何提取参数的数量和名称。即,鉴于我有一个参考func
,我想要func.[something]
返回("arg1", "arg2")
。
使用场景是我有一个装饰器,并且我希望按照它们作为键出现在实际函数中的相同顺序使用方法参数。即,"a,b"
当我打电话时,装饰器会如何打印a_method("a", "b")
?
python - 您如何确定 Python 类的每个属性和方法的定义位置?
给定 Python 中某个类的实例,能够确定哪一行源代码定义了每个方法和属性(例如实现1)将很有用。例如,给定一个模块 ab.py
定义一个函数 where(class_, attribute) 返回一个元组,该元组包含定义或子类化的源代码中的文件名、类和行attribute
。这意味着在班级主体中的定义,而不是由于过度活跃而导致的最新分配。如果它为某些属性返回“未知”,那很好。
我想在自省 Plone 时使用它,其中每个对象都有数百个方法,按类而不是按字母顺序对它们进行排序非常有用。
当然,在 Python 中你不能总是合理地知道,但在大多数静态代码的常见情况下获得好的答案会很好。
python - 为什么 dir(x) 中的所有名称都不能用于属性访问?
__dict__
为什么编码员会将不能用于属性访问的东西塞入其中?例如,在我的 Plone 实例中,dir(portal)
包含index_html
,但portal.index_html
会引发 AttributeError。__class__
的属性也是如此Products.ZCatalog.Catalog.mybrains
。有充分的理由dir()
不值得信任吗?
在模块周围戳inspect
,我看到他们使用object.__dict__['x']
而不是属性访问是出于这个原因并且因为他们不想触发getattr
魔法。
python - 获取实例的类名?
如果我正在执行此操作的函数是派生实例类的基类,我如何找出在 Python 中创建对象实例的类的名称?
在想也许检查模块可能在这里帮助了我,但它似乎并没有给我想要的东西。并且缺少解析__class__
成员,我不确定如何获取此信息。
python - 如何在 Python 2.x 中对对象执行自省?
我正在使用 Python 2.x,并且我有一个从以太中召唤的物体;关于它的文档不是特别清楚。我希望能够获得该对象的属性列表以及每个属性的类型。
同样,我还想获取该对象的方法列表,以及我可以找到的有关该方法的任何其他信息,例如参数的数量及其各自的类型。
我有一种感觉,我只是在我的谷歌搜索中错过了正确的行话。并不是说我想破坏细节,但它是 Active Directory,所以这总是很有趣。
python - 使用超级问题(python 2.5.2)
我正在为我的程序编写一个插件系统,但我无法克服一件事:
测试插件如下所示:
现在 IPlugin 看起来像这样:
所有 IPlugin 类本身都可以完美运行,但是当被 ThingLoader 调用时,程序会出现异常:
我环顾四周,我根本不知道发生了什么事。
python - Python 反射和类型转换
在 Python 中,str()、int()、float() 等函数通常用于执行类型转换。但是,这些要求您在开发时知道要转换为哪种类型。我正在尝试编写的一些 Python 代码的子问题如下:
给定两个变量foo
和bar
,找出 的类型foo
。(在开发时不知道,因为这是通用代码。)然后,尝试转换bar
为任何类型foo
。如果无法做到这一点,则抛出异常。
例如,假设您调用了执行此操作的函数conv
。它的签名看起来像
它会被称为: