进一步处理Dill package。昨天发布了一些ignorance of referents, referrers, inheritance and containers示例。答案很有见地,但是我还是很难想出一些例子来展示引用者和被引用者链的深度。在
昨天我在想一个instance
对它的类来说是referrer
。在Dill文档中,子是引用者,因此在这种情况下,depth=2
的子将是孙子,对吗?这会是一个object
,它是指另一个object
,它是指另一个object
的另一个{
如果一个对象的引用和referer的链至少有两个深度,那么这个对象的例子是什么?在
考虑:
import dill
class GreatGrandparentClass(object):
"""A Great Grandparent class"""
name = "Henrietta Ancient One"
class GrandparentClass(GreatGrandparentClass):
"""A Grandparent class"""
class ParentClass(GrandparentClass):
"""A Grandparent class"""
great_grand_parent = ParentClass().name
print ("Children (depth=2):")
for element in dill.detect.children(
great_grand_parent,
list,
depth=2,
ignore=(globals())):
print(element)
print ("Parents:")
for element in dill.detect.parents(
great_grand_parent,
list,
depth=2,
ignore=(globals())):
print(element)
退货:
^{pr2}$具体地看一下这里的list
对象,great_grand_parent
的单个referent(父对象)是字符串“Henrietta古人”。在
而referer(Children)(按指定的对象类型过滤的gc.get_referrers()
的结果)包含两个对象:一个list
,它包含字符串“Henrietta-angiol-One”,和string
Henrietta-agiot-One。(depth=2和depth=1返回相同的结果。)
如何制作Dill可以返回的对象:
下面是一个孩子和家长的例子,如果你不熟悉python是如何构建类实例的话,一开始可能会有点惊讶。。。在
我们构造一个类,并尝试从类的实例中获取方法
foobar
。在它似乎不起作用……但实际上,这是由于python如何构建类实例。事实证明,类实例指向类。。。但是从那里,类实例利用类
^{pr2}$__dict__
来查找任何类方法或属性。因此,任何包含的方法或函数都位于depth=3(而不是depth=2)。在现在,换一种方式非常符合您所考虑的使用类继承的思想。在
相关问题 更多 >
编程相关推荐