Dill パッケージでさらに作業を進めます。昨日投稿されたのは、リファレント、リファラー、継承、およびコンテナーに関する無知の例です。答えは洞察に満ちていましたが、リファラーとリファレント チェーンのいくつかのレベルの深さを示す例を思いつくのにまだ苦労しています。
昨日、私はそれがそのクラスにinstance
なるだろうと思っていました。referrer
ディルのドキュメントではchildrenがreferrerであるため、その場合のchildはgrandchilddepth=2
になりますよね? そして、それは、別のものを参照する別のものを参照する(指し示す)でしょうか?object
object
object
少なくとも 2 の深さのリファレントとリファラーのチェーンを持つオブジェクトの例は何でしょうか?
検討:
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)
戻り値:
Children (depth=2):
['\npython pydill.py\n\n', 'dill', 'object', 'A Great Grandparent class', 'i', 'Henrietta Ancient One', 'GreatGrandparentClass', 'GreatGrandparentClass', 'A Grandparent class', 'GrandparentClass', 'GrandparentClass', 'A Grandparent class', 'ParentClass', 'great_grand_parent', 'ParentClass', 'i', 'Children (depth=2):', 'element', 'dill', 'detect', 'children', 'great_grand_parent', 'list', 'depth', 2, 'ignore', 'globals', 'element', 'Parents:', 'element', 'dill', 'detect', 'parents', 'great_grand_parent', 'list', 'depth', 2, 'ignore', 'globals', 'element']
Henrietta Ancient One
Parents:
Henrietta Ancient One
ここで具体的にlist
オブジェクトを見ると、単一の参照先(親)great_grand_parent
は文字列「ヘンリエッタ エンシェント ワン」です。
And the referrers (Children) (result of gc.get_referrers()
, filtered by specified object-type) contains two objects: A list
that includes the string 'Henrietta Ancient One', and the string
Henrietta Ancient One. (depth=2 and depth=1 return the same result.)
How can I make an object for which Dill can return:
- Two distinct depths of referrers
- Two distinct depths of referents