def get_target_url(self, memoize=True):
		"""Calculates and returns the target url based on the :attr:`target_node`, :attr:`url_or_subpath`, and :attr:`reversing_parameters`. The results will be memoized by default; this can be prevented by passing in ``memoize=False``."""
		if memoize:
			memo_args = (self.target_node_id, self.url_or_subpath, self.reversing_parameters_json)
			try:
				return self._target_url_memo[memo_args]
			except AttributeError:
				self._target_url_memo = {}
			except __HOLE__:
				pass
		
		node = self.target_node
		if node is not None and node.accepts_subpath and self.url_or_subpath:
			if self.reversing_parameters is not None:
				view_name, args, kwargs = self.get_reverse_params()
				subpath = node.view.reverse(view_name, args=args, kwargs=kwargs)
			else:
				subpath = self.url_or_subpath
				if subpath[0] != '/':
					subpath = '/' + subpath
			target_url = node.construct_url(subpath)
		elif node is not None:
			target_url = node.get_absolute_url()
		else:
			if self.reversing_parameters is not None:
				view_name, args, kwargs = self.get_reverse_params()
				target_url = reverse(view_name, args=args, kwargs=kwargs)
			else:
				target_url = self.url_or_subpath
		
		if memoize:
			self._target_url_memo[memo_args] = target_url
		return target_url
dataset/ETHPy150Open ithinksw/philo/philo/models/nodes.py/TargetURLModel.get_target_url