Python 在类方法(如调用)内实现__
因此,我创建了一个模块,在这个模块中,我可以将shell程序作为函数导入;与Python 在类方法(如调用)内实现__,python,python-3.x,Python,Python 3.x,因此,我创建了一个模块,在这个模块中,我可以将shell程序作为函数导入;与sh不同,我的模块可以直接执行类似于git(C=path).commit(m=message)的操作,方法是将模块类本身作为部分返回:return partial(bakery,self.program)。但是,如果没有像ls.\uz()这样的占位符方法,我已经失去了运行像ls()这样的东西的能力,这看起来不太好。后者中的代码:将输出返回为列表(args,kwargs) 从functools导入部分 def_u_geta
sh
不同,我的模块可以直接执行类似于git(C=path).commit(m=message)
的操作,方法是将模块类本身作为部分返回:return partial(bakery,self.program)
。但是,如果没有像ls.\uz()
这样的占位符方法,我已经失去了运行像ls()
这样的东西的能力,这看起来不太好。后者中的代码:将输出返回为列表(args,kwargs)
从functools导入部分
def_u_getattr__(名称):
如果名称=“\uuuu路径”:
提高属性错误
返回面包店(名称)
高级面包店:
定义初始化(自我,程序):
self.program=程序
def uu getattr u(self,子命令):
返回子命令
@财产
定义呼叫(自我):
返回部分(面包店、自助程序)
我的问题是:
有没有一种方法可以告诉\uuu call\uu
您正在访问一个动态属性,例如,在其中使用\uu getattr\uuu
来实现git(C=path).commit(m=message)
和ls()
场景?或者根据是否正在访问\uuuu call\uuuu
的属性,有条件地返回部分或输出列表
编辑: 我想知道类似的方法是否可行
def\uuu调用(self,*args,**kwargs):
类内部\u类:
定义初始化(self,*args,**kwargs):
self.args=args
self.kwargs=kwargs
def uu getattr u(self,子命令):
返回部分(面包店、自助程序)
定义调用(self,*args,**kwargs):
返回面包店(*self.args,**self.kwargs)。\u获取输出作为列表(*args,**kwargs)
返回内部类(self.program,*args,**kwargs)
编辑2:
我想我可以将单个的
\uuuuu调用
函数转换成子类,然后从需要的子类导入。你能给出一个实际代码的小例子吗?我不清楚你的问题是什么。我的代码到处都是;你能给我一个具体的例子来说明该提供什么吗?@ShadowRylander我不确定你会发现有多少候选人愿意阅读你的整个回购协议,只是为了理解你的问题。请用适当的标题编辑您的问题。\uuuuu call\uuuuu
与它返回的内容的使用无关。问题是,您希望ls()
实际运行命令,但git()
应该返回一个在返回时运行命令的对象\uuuu call\uuuu
无法看到未来,无法看到哪个是哪个,因为类似于x=git(…)。。。;x、 提交(…)
是完全合法的。git
和ls
本质上是不同的东西;你必须以不同的方式对它们进行建模。从某种意义上说,ls
更接近于类似于RunnableCommand
的子类,而git
则是RunnableCommandBuilder
的子类:它将具有创建实际映射到shell命令的RunnableCommand
实例的方法。