使方法模块化或依赖/链接有意义吗?
我正在学习Python和一般编程真的,我很好奇,从一个更哲学的角度东西。具体来说,我想知道在一个类中的单个方法是完全模块化的还是相互依赖的。使方法模块化或依赖/链接有意义吗?
例如,在我当前的用例中,我以相关的方式使用我的类中的所有方法,即将来自一个方法的输出或返回值用作下一个方法中的参数。尽管在这种情况下,在下一个方法中直接调用该方法的值肯定会更容易,但我仍然使用泛型参数并以模块化方式对其进行编码,然后在运行该脚本时,我列出了一个较长的依赖关系链为了调用它。我会举一个例子,因为我不确定我说的是否合理,但我想让你们的人对此有所意见。谢谢!!
的类中的方法2模块化例如:
def get_token(self, values, url): self.values = values
self.url = url
tls_version = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
data = urllib.parse.urlencode(self.values).encode("utf-8")
req = urllib.request.Request(self.url, data)
res = urllib.request.urlopen(req, context=tls_version).read()
response_js = json.loads(res)
return response_js
def parse(self, json_block):
self.json_block = json_block
token = self.json_block['access_token']
inst_url = self.json_block['instance_url']
return token, inst_url
当我打电话这一点,则是一个长长的名单(即):
self.parse(get_token(values, url)) ... and this goes on as there are several other methods
当涉及到依赖的例子......它本质上看起来很相似,但不是允许指定参数,而是使用从函数中的get_token()
检索的数据。这将允许更短的方法,也更容易打电话,但我担心这是错误的方式去做,因为它不允许多功能性。
对此事的任何意见,非常感谢!
回答:
我个人认为(因为这是这是什么),最有用的方式做到这一点是让他们都相互分开,但有它计算它们放在一起的功能。
看到代码:
class Foo: def method1(self, var1, var2):
# do things
return var3, var4
def method2(self, var1, var2):
# do things
return var3
def method3(self, var1):
# do things
return var3, var4, var5
def method4(self, var1, var2, var3):
# do things
return var3
def calculate_meaning_of_life(self, var1, var2):
inter_var1, inter_var2 = method1(var1, var2)
inter_var3 = method2(inter_var1, inter_var2)
inter_var4, inter_var5, inter_var6 = method3(inter_var3)
answer = method4(inter_var4, inter_var5, inter_var6)
return answer # happens to always output 42
在这里,你可以调用Foo.method3
用你喜欢的任何参数,并把它的成绩直线距离,而无需经过其他功能或任何痛苦的那样。此外,您还可以快速调用Foo.calculate_meaning_of_life
FUNC计算它们放在一起(注:无法在同一行,因为这将是非常不可读),以任何你想要的变量,它所有繁重的你。
特别是从调试的角度来看,你要能够分别叫所有的人,并分析它们返回什么,因为,在最后,如果他们只能一起跑,为什么不只是有一个功能?
另外,如果您曾经为其他人安装软件包,他们会找到原因,只为他们的特定项目使用Foo.method2
,所以您应该尽可能使所有已编写的代码都易于访问。
希望这会有所帮助!
回答:
我看到它的方式是可读性,因为utimately你(和最有可能其他人也)都将有权审查你的代码。你需要一个在这方面适合你的方法。
这是我的方法:
保持每个方法从别人不同。如果你正在考虑使用helper方法,那么把它们保存在它们所使用的方法中是一个好主意,或者(如果在同一个操作中有很多用法)只是将它们分组在他们自己的类中。
class MyClass: def distinct_method(self):
def distinct_helper():
# helper
return ", right?"
# do some distinct stuff
return other_distinct_method() + distinct_helper()
def other_distinct_method(self.):
# do some other distinct stuff
return "it should be distinct"
if __name__ == "__main__":
print MyClass().distinct_method()
一个好的经验法则是不会让一个辅助方法类的一部分,除非它是由一个以上的其他实例方法使用如:中
class MyClass2: def helper(self):
return "help!"
def method1(self):
return "I use " + self.helper()
def method2(self):
return "I also use " + self.helper()
代替
class MyClass1: def helper(self):
return "help!"
def method1(self):
return "I use " + self.helper()
def method2(self):
return "I don't use helper!"
以上是 使方法模块化或依赖/链接有意义吗? 的全部内容, 来源链接: utcz.com/qa/258922.html