为了账号安全,请及时绑定邮箱和手机立即绑定

具有中间结果的调用链方法

具有中间结果的调用链方法

慕雪6442864 2021-03-29 17:10:51
我有一个课程和一些方法。我能否在调用之间保留方法的结果。调用示例:结果= my_obj.method_1(...)。method_2(...)。method_3(...)当method_v3(...)收到来自method_2(..)谁的结果时method 1(..)请告诉我,是否有模式或其他方法可以决定上述示例?
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

有一种非常简单明了的模式,称为Builder Patternwhere方法,该方法基本上返回对当前对象的引用,因此,将方法调用彼此链接在一起,而不是将它们彼此链接在一起。


《四人帮》一书中描述的实际构建器模式有些冗长(为什么要创建一个构建器对象),而只是self从每个返回一个引用以setXXX()进行干净的方法链接。


在Python中可能看起来像这样:


class Person: 

   def setName(self, name):

      self.name = name

      return self   ## this is what makes this work


   def setAge(self, age):

      self.age = age;

      return self;


   def setSSN(self, ssn):

      self.ssn = ssn

      return self

您可以这样创建一个人:


p = Person()

p.setName("Hunter")

 .setAge(24)

 .setSSN("111-22-3333")

请记住,p.a().b().c()由于Python不会忽略空格,因此您实际上必须将方法与它们的接触联系起来。


正如@MaciejGol在注释中指出的那样,您可以将其分配为p与空白链接:


p = (

   Person().setName('Hunter')

           .setAge(24)

           .setSSN('111-22-3333')

)

我不能说这是否是Python的最佳样式/想法,但这是它在Java中的外观。


查看完整回答
反对 回复 2021-04-06
  • 2 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信