本文整理汇总了Python中pyndn.Name.isPrefixOf方法的典型用法代码示例。如果您正苦于以下问题:Python Name.isPrefixOf方法的具体用法?Python Name.isPrefixOf怎么用?Python Name.isPrefixOf使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyndn.Name
的用法示例。
在下文中一共展示了Name.isPrefixOf方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Namespace
# 需要导入模块: from pyndn import Name [as 别名]
# 或者: from pyndn.Name import isPrefixOf [as 别名]
class Namespace(object):
def __init__(self, name):
"""
Create a Namespace object with the given name, and with no parent. This
is the root of the name tree. To create child nodes, use
myNamespace.getChild("foo") or myNamespace["foo"].
:param Name name: The name of this root node in the namespace. This
makes a copy of the name.
"""
self._name = Name(name)
self._parent = None
# The dictionary key is a Name.Component. The value is the child Namespace.
self._children = {}
# The keys of _children in sorted order, kept in sync with _children.
# (We don't use OrderedDict because it doesn't sort keys on insert.)
self._sortedChildrenKeys = []
self._data = None
self._content = None
self._face = None
# The dictionary key is the callback ID. The value is the onNameAdded function.
self._onNameAddedCallbacks = {}
# The dictionary key is the callback ID. The value is the onContentSet function.
self._onContentSetCallbacks = {}
self._transformContent = None
def getName(self):
"""
Get the name of this node in the name tree. This includes the name
components of parent nodes. To get the name component of just this node,
use getName()[-1].
:return: The name of this namespace. NOTE: You must not change the
name - if you need to change it then make a copy.
:rtype: Name
"""
return self._name
def getParent(self):
"""
Get the parent namespace.
:return: The parent namespace, or None if this is the root of the tree.
:rtype: Namespace
"""
return self._parent
def getRoot(self):
"""
Get the root namespace (which has no parent node).
:return: The root namespace.
:rtype: Namespace
"""
result = self
while result._parent:
result = result._parent
return result
def hasChild(self, component):
"""
Check if this node in the namespace has the given child.
:param component: The name component of the child.
:type component: Name.Component or value for the Name.Component constructor
:return: True if this has a child with the name component.
:rtype: bool
"""
if not isinstance(component, Name.Component):
component = Name.Component(component)
return component in self._children
def getChild(self, nameOrComponent):
"""
Get a child (or descendant), creating it if needed. This is equivalent
to namespace[component]. If a child is created, this calls callbacks as
described by addOnNameAdded (but does not call the callbacks when
creating intermediate nodes).
:param nameOrComponent: If this is a Name, find or create the descendant
node with the name (which must have this node's name as a prefix).
Otherwise, this is the name component of the immediate child.
:type nameOrComponent: Name or Name.Component or value for the
Name.Component constructor
:return: The child Namespace object. If nameOrComponent is a Name which
equals the name of this Namespace, then just return this Namespace.
:rtype: Namespace
:raises RuntimeError: If the name of this Namespace node is not a prefix
of the given Name.
"""
if isinstance(nameOrComponent, Name):
descendantName = nameOrComponent
if not self._name.isPrefixOf(descendantName):
raise RuntimeError(
"The name of this node is not a prefix of the descendant name")
# Find or create the child node whose name equals the descendantName.
# We know descendantNamespace is a prefix, so we can just go by
# component count instead of a full compare.
#.........这里部分代码省略.........