问题标签 [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 自省:如何获取对象属性的“未排序”列表?
以下代码
输出
如何让它按照代码中定义这些类的顺序输出?IE
除了使用 inspect.getsource(A) 并解析之外,还有其他方法吗?
python - 查看目录中列出的属性和方法列表时,您如何知道哪些是属性,哪些是方法?
我正在努力学习用 Python 编程,并专注于更好地处理如何使用标准和其他模块。dir 函数在解释器中似乎非常强大,但我想知道我是否因为缺乏 OOP 背景而遗漏了什么。使用 S.Lotts 的书,我决定使用他的 Die 类来学习更多关于语法以及类和实例的使用。
这是原始代码:
我正在查看它,在创建了一些实例之后,我想知道单词 value 是否是关键字,以及 class 语句中单词 object 的用途是什么,因此我决定通过将类定义更改为以下内容来找出答案:
这种变化表明我从我的实例中得到了相同的行为,但是当我执行 dir 时,实例中缺少以下方法/属性:
我还发现当我在一个实例上做一个目录时,我有一个额外的关键字ban,我最终发现它是我实例的一个属性。这帮助我了解我可以使用d1.ban来访问我的实例的值。我能弄清楚这是一个属性的唯一原因是我输入了d1.happy并得到了一个AttributeError 我发现d1.GetValue是一个附加到 Die 的方法,因为这是解释器告诉我的。
因此,当我尝试使用诸如 BeautifulSoup 之类的复杂但有用的模块时,在键入dir(instance)后,我如何知道列出的哪些内容是我的实例的属性或我的实例的方法。我需要知道这一点,因为这种探索告诉我,我使用属性调用方法的结果,使用方法调用实例上的函数。
这个问题可能太罗嗦了,但它确实帮助我更好地理解了属性和方法之间的区别。具体来说,当我查看在 Die 类的实例上调用 dir 的结果时,我看到了这个
因此,通过查看该列表来了解哪些是属性和哪些是方法似乎很有用,而不必诉诸试验和错误或导致输入hasattr(myInstance,suspectedAttributeName)。
发布问题后,我尝试了
严格来说,它告诉我所有方法都是属性。但我不能调用没有()的方法,所以在我看来 hasattr() 具有误导性。
python - 如果你实现 __getattribute__ 有没有办法访问形式参数
似乎__getattribute__
只有 2 个参数(self, name)
。
但是,在实际代码中,我拦截的方法实际上是带参数的。
无论如何可以访问这些论点吗?
谢谢,
查理
python - 循环 Python / IronPython 对象方法
遍历 Python 对象的方法并调用它们的正确方法是什么?
给定对象:
python - 在python中获取对象的父命名空间?
在 python 中,可以使用 '.' 为了访问对象的字典项。例如:
从上面的例子中,有一个'a'对象,是否有可能从中获得对'obj'的引用,它是分配给'foo'方法的父命名空间?比如把obj.b改成2?
python - 获取定义方法的类
如何获取在 Python 中定义方法的类?
我希望以下示例打印“ __main__.FooClass
”:
python - 应用于列表的乘法运算符(数据结构)
我正在阅读如何像计算机科学家一样思考,这是“Python 编程”的介绍性文本。
我想澄清乘法运算符 ( *
) 应用于列表时的行为。
考虑函数make_matrix
实际输出为
make_matrix的正确版本 是:
make_matrix的第一个版本失败的原因(如书中 9.8 中所述)是
...每一行都是其他行的别名...
我想知道为什么
原因...每一行都是其他行的别名...
但不是
即为什么每一[0]
行都不是其他行元素的别名。
php - CakePHP中基于三级关系查询数据
我建立了以下关系:
现在,对于给定的 A,我需要所有带有 B 的 C。我可以编写 SQL 查询,但是正确的 CakePHP 方式是什么?我在哪个模型上调用什么方法,使用哪些参数?
python - 和我一起解密 MultiplierFactory
本周在 comp.lang.python 上, Steven D'Aprano发布了一段“有趣”的代码,作为对家庭作业问题的开玩笑回答。这里是:
我们知道这twice
相当于答案:
从名称中Multiplier
,MultiplierFactory
我们可以了解代码在做什么,但我们不确定确切的内部结构。让我们先简化它。
逻辑
not factor is not None is True
等价于not factor is not None
, 这也是factor is None
. 结果:
到目前为止,这很容易:)
属性访问
另一个有趣的地方是好奇的factor
访问器。
在初始化期间MultiplierFactory
,self.__factor
设置。但稍后,代码访问self.factor
.
然后似乎:
正在做的正是“ self.__factor
”。
我们可以总是以这种方式访问属性吗?
动态改变函数签名
无论如何,在这一点上,这是简化的代码:
代码现在几乎是干净的。唯一令人费解的可能是:
里面有什么?我查看了数据模型文档,发现它func_defaults
是“一个元组,其中包含那些具有默认值的参数的默认参数值,或者如果没有参数具有默认值,则为 None ”。我们只是 factor
在这里更改参数的默认值 __init__
吗?生成的代码将是:
这意味着动态设置默认值只是无用的噪音,因为Multiplier
在没有默认参数的情况下永远不会被调用,对吧?
我们可能可以将其简化为:
正确的?
对于那些急于“这不是一个真正的问题”的人......再读一遍,我的问题是粗体+斜体