已关闭,该问题为opinion-based,目前不接受回答。
**想改进这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
5小时前关闭
Improve this question
例如:
class Foo(object):
def __init(self, x):
self.var = x
def loop(self):
# [yield params]
result = self.do_sth(params)
def do_sth(self, params):
if self.var is not None:
bar(params)
if self.var > 1:
do_other_bar(params)
if __name__ == '__main__':
foo = Foo(2)
在我的项目中,我有一个由很多方法组成的类,所以我想把do_sth
方法移到另一个模块中会很好:
# mymodule.py
def do_sth_external(params, var):
if var is not None:
bar()
if var > 1:
do_other_bar()
from mymodule import do_sth_external
class Foo(object):
def __init(x):
self.var = x
def loop():
# [yield params]
result = do_sth_external(params, self.var)
if __name__ == '__main__':
foo = Foo(2)
还有什么其他的方法可以分解一个巨大的类呢?我试着将self引用传递给方法,但我认为这更丑陋,特别是如果你把这个原则想象成一个冗长的用例
1条答案
按热度按时间wgx48brx1#
不同意或不同意这样拆分类是一个好主意,正确的方法是像往常一样简单地定义方法,并简单地将函数分配给适当的类属性。
成为
class
语句中的函数定义没有什么特别之处;唯一重要的事情是class
语句的命名空间中的 name 被分配一个适当的值。(元类将使用class
语句中定义的所有名称来向结果类添加属性,示例方法只不过是一个function
值的类属性。)不时有各种各样的提议允许像
以便于在创建类后向类添加方法。这是因为已经可以使用赋值语句,如
并且我们认为其他执行赋值的语句也应该能够赋值给属性。