Class inheritance graphs¶
- sage.misc.classgraph.class_graph(top, depth=5, name_filter=None, classes=None, as_graph=True)[source]¶
- Return the class inheritance graph of a module, class, or object. - INPUT: - top– the module, class, or object to start with (e.g.- sage,- Integer,- 3)
- depth– maximal recursion depth within submodules (default: 5)
- name_filter– e.g. ‘sage.rings’ to only consider classes in- sage.rings
- classes– (optional) dictionary to be filled in (it is also returned)
- as_graph– boolean (default:- True)
 - OUTPUT: - An oriented graph, with class names as vertices, and an edge from each class to each of its bases. - EXAMPLES: - We construct the inheritance graph of the classes within a given module: - sage: from sage.rings.polynomial.padics import polynomial_padic_capped_relative_dense, polynomial_padic_flat sage: G = class_graph(sage.rings.polynomial.padics); G Digraph on 6 vertices sage: G.vertices(sort=True) ['Polynomial', 'Polynomial_generic_cdv', 'Polynomial_generic_dense', 'Polynomial_padic', 'Polynomial_padic_capped_relative_dense', 'Polynomial_padic_flat'] sage: G.edges(sort=True, labels=False) [('Polynomial_padic', 'Polynomial'), ('Polynomial_padic_capped_relative_dense', 'Polynomial_generic_cdv'), ('Polynomial_padic_capped_relative_dense', 'Polynomial_padic'), ('Polynomial_padic_flat', 'Polynomial_generic_dense'), ('Polynomial_padic_flat', 'Polynomial_padic')] - >>> from sage.all import * >>> from sage.rings.polynomial.padics import polynomial_padic_capped_relative_dense, polynomial_padic_flat >>> G = class_graph(sage.rings.polynomial.padics); G Digraph on 6 vertices >>> G.vertices(sort=True) ['Polynomial', 'Polynomial_generic_cdv', 'Polynomial_generic_dense', 'Polynomial_padic', 'Polynomial_padic_capped_relative_dense', 'Polynomial_padic_flat'] >>> G.edges(sort=True, labels=False) [('Polynomial_padic', 'Polynomial'), ('Polynomial_padic_capped_relative_dense', 'Polynomial_generic_cdv'), ('Polynomial_padic_capped_relative_dense', 'Polynomial_padic'), ('Polynomial_padic_flat', 'Polynomial_generic_dense'), ('Polynomial_padic_flat', 'Polynomial_padic')] - We construct the inheritance graph of a given class: - sage: class_graph(Parent).edges(sort=True, labels=False) [('CategoryObject', 'SageObject'), ('Parent', 'CategoryObject'), ('SageObject', 'object')] - >>> from sage.all import * >>> class_graph(Parent).edges(sort=True, labels=False) [('CategoryObject', 'SageObject'), ('Parent', 'CategoryObject'), ('SageObject', 'object')] - We construct the inheritance graph of the class of an object: - sage: class_graph([1,2,3]).edges(sort=True, labels=False) [('list', 'object')] - >>> from sage.all import * >>> class_graph([Integer(1),Integer(2),Integer(3)]).edges(sort=True, labels=False) [('list', 'object')] - Warning - the output of - class_graphused to be a dictionary mapping each class name to the list of names of its bases. This can be emulated by setting the option- as_graphto- False:- sage: class_graph(sage.rings.polynomial.padics, depth=2, as_graph=False) {'Polynomial_padic': ['Polynomial'], 'Polynomial_padic_capped_relative_dense': ['Polynomial_generic_cdv', 'Polynomial_padic'], 'Polynomial_padic_flat': ['Polynomial_generic_dense', 'Polynomial_padic']} - >>> from sage.all import * >>> class_graph(sage.rings.polynomial.padics, depth=Integer(2), as_graph=False) {'Polynomial_padic': ['Polynomial'], 'Polynomial_padic_capped_relative_dense': ['Polynomial_generic_cdv', 'Polynomial_padic'], 'Polynomial_padic_flat': ['Polynomial_generic_dense', 'Polynomial_padic']} - Note - the - classesand- as_graphoptions are mostly intended for internal recursive use.- Note - class_graphdoes not yet handle nested classes