Python 我想将函数变量初始化为之前输入的变量
所以我输入:Python 我想将函数变量初始化为之前输入的变量,python,python-3.x,Python,Python 3.x,所以我输入: router=路由器(“a”,图形) 在我的主要职能中。这将获取图形并将其放入此路由器函数中。我希望我的查找功能,我希望开始是我在上面分配的“a”,等等,但我尝试了self.name等,但它不起作用。我怎么修理它 class router(object): def __init__(self,name,Graph): self.name = name self.Graph = Graph def find(self, start=name,
router=路由器(“a”,图形)
在我的主要职能中。这将获取图形并将其放入此路由器函数中。我希望我的查找功能,我希望开始是我在上面分配的“a”,等等,但我尝试了self.name等,但它不起作用。我怎么修理它
class router(object):
def __init__(self,name,Graph):
self.name = name
self.Graph = Graph
def find(self, start=name, maxD=1e309):
遗憾的是,您无法基于其他参数初始化参数,因此您可以将其初始化为
None
,然后检查它是否为None
:
类路由器(对象):
定义初始化(自身、名称、图形):
self.name=名称
self.Graph=Graph
def find(self,start=None,maxD=1e309):
如果“开始”为“无”:
start=self.name
#start现在初始化为self.name
通过
您可以使用functools.partial
方法预先初始化损坏的名称\u find
方法并将其存储到find
:
from functools import partial
class router(object):
def __init__(self, name, Graph):
self.name = name
self.Graph = Graph
self.find = partial(self._find, start=name)
def _find(self, start, maxD=1e309):
print(start, maxD)
rtr = router('router_name', 'some_graph')
rtr.find()
# Out: router_name inf
rtr.find(start='new_start', maxD=np.pi)
# Out: new_start 3.141592653589793
由于这涉及覆盖关键字参数开始
,因此强制\u find
方法仅接受带有*
-语法的关键字参数是最佳做法:
def _find(self, *, start, maxD=1e309):
print(start, maxD)
有关更多信息,请参阅。判决
如果提供了其他关键字参数,它们将扩展并覆盖关键字
是考虑您的问题的重要部分。将
a
保存为self.name
,您可以通过find
方法访问它。如果您声称自己尝试过,请查看该尝试,并查看我执行此操作时我们是否可以帮助您def shortestpath(图形,start=None,end):“查找图形中的最短路径btw start&end节点”“”\,如果start为None,则将当前距离设置为零:start=self.name pass它返回默认参数后面的非默认参数如果给start
一个默认值,还必须给end
一个默认值,由于它位于参数列表中的start
之后,但在我的函数find(“f”)中,我想将f传递到end,而此时图形和start已经存在,我还需要指定默认值吗?对不起,我对这个很陌生,那么你应该为graph提供一个默认参数,并将第一个参数设为end,并将它们作为关键字参数传递。你应该阅读和。