问题标签 [python-descriptors]
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 - django模型现场工厂
我正在尝试做这样的事情:
当我创建用户实例时,将一些名称传递给构造函数 python 会引发错误:
到底是怎么回事?我如何为模型字段制作工厂?
python - Python - 如何将实例变量值传递给描述符参数?
考虑到以下情况,
项目列表类:
在这种情况下,我想将self.item_num
值传递给类中的item_num
内部定位器字典ItemList
。
原因是我想要每个item_id
并且item_title
指的是特定的item_num
.
我被困在这部分:
self.item_num
当实例已经创建时,值不能传递给定位器。
执行:
是否可以从实例变量更新数据描述符?
如何将实例变量值传递给数据描述符参数?
附加信息:
我试图调用item_id
和item_title
作为实例属性,但没有运气。我注意到数据描述符不能是这篇文章的实例属性:数据描述符应该是类属性
物品类别:
描述符:
python - 访问嵌套实例值的嵌套描述符
您如何编写返回具有描述符的对象的描述符,该描述符返回具有描述符的其他对象?在下面的代码中,getattr
in__get__
和__set__
以不同的实例作为参数调用,但它引用相同的对象。请告知如何使它通过所附的测试。
一般来说,这应该是生成严格模式的 JSON 报告的助手。它生成结构,但值在结构节点中是通用的。仅当我在一个类中有多个相同类型(ObjectField)的类属性时,问题才会暴露。
python - 如何在 Python 中实现描述符
我正在根据文档中的属性示例处理我自己的描述符:https ://docs.python.org/3/howto/descriptor.html#properties
但由于某种原因,我所有的属性都是一样的。
首先,为什么传递给构造函数的值没有按我的意图设置/访问?为什么变化a
似乎b
也在变化?
python - 使用“Python 描述符”的条件动态验证器
我想构建一个简单的“DataSource”类,其属性名为“data_source_type”和“data_source_path”。其中“data_source_type”是一个枚举,“data_source_path”是一个字符串,取决于“data_source_type”,我想将“ValidFilePath”或“ValidHttpURL”等适当的验证设置为“data_source_path”。
我不想编写 IF-ELSE 并有一个意大利面条数据源类,我想利用“Python 描述符”或任何其他优雅的 Python 构造,它们会考虑 SRP(单一责任原则)并支持函数式编程构造。
数据源.py
截至目前,在第 51 行中,我放置了“ValidHttpURL”,我想根据“data_source_type”设置适当的验证描述符
预期行为
实际行为
***更新的答案***
python - __slot__ 描述符如何在 python 中工作?
我知道__slots__
它的用途和用途。
member
但是,我还没有找到关于使用创建的描述符的底层机制如何__slots__
工作的全面答案。
对象级值实际存储在哪里?
有没有办法在没有直接属性访问描述符的情况下更改这些值?
(例如,当上课时C
你__dict__
可以做C.__dict__['key']
而不是C.key
)
__slots__
可以通过创建类似的类级描述符来“扩展”定义对象的不变性吗?作为对此的进一步阐述;可以使用元类构建不可变对象,但不__slots__
通过手动创建所述描述符来明确定义吗?
python - Python:如何访问嵌套描述符中的实例属性?
例子
举个例子
InLeaf.__get__
instance
指向Branch
实例。但是,我需要访问value
,它是 的实例成员Root
。
背景
我的任务是为大文件头编写解析器。解析器应该是健壮和快速的。因此,我建议使用描述符来懒解析字段,而不是解析整个头部结构。这允许仅在需要时对标头字段进行解码/编码。因此,有一个根对象将完整的标头保存为一个字节数组,当访问一个字段时,它的描述符会读取或写入这个字节数组。但是,标题结构是分层的并且包含嵌套字段。出于这个原因,我需要从嵌套描述符访问根字节数组。
相关问题和解决方案
关于实例描述符的类似问题之前已经提出。
1.创建一个实例
解决方案是将描述符添加到实例而不是类,并将共享值设置为引用。IMO 这似乎有点低效。
请参阅在 python和Python 中动态添加 @property - 如何将实例变量值传递给描述符参数?
2.覆盖__getattribute__
我认为这行不通,因为__getattribute__
ofBranch
不知道该Root
实例。
3. 传播value
在遍历结构时,Branch.__get__
会调用它,我们可以在其中存储对根实例的引用,该引用可从Leaf.__get__
. 但是,如果我们在多个Root
.
最后,我的问题是对于这个特定问题是否有更好的解决方案?
python - 了解使基于类的装饰器支持实例方法的技术
我最近在 Python 装饰器库的装饰器中遇到了一种技术,memoized
它允许它支持实例方法:
正如文档字符串中所解释的那样,该__get__
方法是使装饰器支持实例方法的“魔术发生”的地方。以下是一些表明它有效的测试:
我想了解的是:这种技术究竟是如何工作的?它似乎非常普遍地适用于基于类的装饰器,我在我的回答中应用了它是否可以 numpy.vectorize 实例方法?.
到目前为止,我已经通过注释掉该方法并在子句__get__
之后放入调试器来对此进行调查。else
似乎每当您尝试使用数字作为输入调用它时self.func
,它都会引发 a :TypeError
据我了解,https://docs.python.org/3/reference/datamodel.html#object。get,定义你自己的__get__
方法以某种方式覆盖了你(在这种情况下)调用时发生的事情self.func
,但我正在努力将抽象文档与这个例子联系起来。谁能一步一步解释这个?
python-3.x - Python3.Descriptor.Class
您好,我的任务很简单,但我又被卡住了:
如何将类中的变量用于描述符?
我有commission
来自父类的变量,我需要在调用时将它用于描述符set
:self.amount = int(amount) * int(commission)
我怎样才能做到这一点?
谢谢!
完整代码如下:
python - 有效 Python 中的描述符
我正在阅读“Effective Python”一书中的第 31 项。我不明白为什么在第 97 页的示例中,为什么math_grade
和writing_grade
是science_grade
类的类(静态)变量Exam
,而不是常规的实例变量。如果它们是实例变量,那么Grade
类就不需要在其全局簿记字典中使用实例作为键。在我看来,作者似乎犯了一个明显的设计错误,只是为了说明如何使用描述符,即在 Grade 类中进行全局簿记,无论如何这似乎是个坏主意。
我的另一个问题更高级:这不是一种令人困惑、不清楚的做事方式吗?将多个对象的全局状态保存在一个注册表中,就像 Grade 一样。对我来说,这似乎不是一个可重复使用的干净设计。
对于没有这本书的人,这是对代码的参考:
https://github.com/SigmaQuan/Better-Python-59-Ways/blob/master/item_31_use_descriptors.py
具体来说