将实例传递给__init__。这是一个好主意吗?

罗伯特·史密斯

假设我有一个像这样的简单类:

class Class1(object):
  def __init__(self, property):
    self.property = property
  def method1(self):
    pass

Class1的实例返回一个可以在其他类中使用的值:

class Class2(object):
  def __init__(self, instance_of_class1, other_property):
    self.other_property = other_property
    self.instance_of_class1 = instance_of_class1
  def method1(self):
    # A method that uses self.instance_of_class1.property and self.other_property

这正在工作。但是,我觉得这不是很常见的方法,也许还有其他选择。话虽如此,我试图重构我的类以将更简单的对象传递给Class2,但是我发现将整个实例作为参数传递实际上可以极大地简化代码。为了使用它,我必须这样做:

instance_of_class1 = Class1(property=value)
instance_of_class2 = Class2(instance_of_class1, other_property=other_value)
instance_of_class2.method1()

这与某些R包的外观非常相似。还有更“ Pythonic”的选择吗?

损害

这样做没有错,尽管在这个特定示例中,您似乎可以轻松完成

instance_of_class2 = Class2(instance_of_class1.property, other_property=other_value).

但是,如果您发现需要使用Class1内部的其他属性/方法Class2,只需继续并将整个Class1实例传递到中即可Class2通常在Python和OOP中一直使用这种方法。许多常见的设计模式都要求一个类采用其他类的一个或多个实例:代理,外观,适配器等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

别名cd推送-这是一个好主意吗?

来自分类Dev

组合实例VBO是一个好主意吗?

来自分类Dev

组合实例VBO是一个好主意吗?

来自分类Dev

我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

来自分类Dev

我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

来自分类Dev

通过依赖注入将数据上下文对象传递给控制器是一个好主意吗?

来自分类Dev

匿名类实例----这是一个坏主意吗?

来自分类Dev

由heroku上的node.js服务的静态文件-这是一个好主意吗?

来自分类Dev

使用宏在C中实现通用向量。这是一个好主意吗?

来自分类Dev

临时扩展Java中的现有对象-这是一个好主意吗?

来自分类Dev

在Mac OS X的哪里设置DYLD_LIBRARY_PATH,这是一个好主意吗?

来自分类Dev

将未初始化的变量传递给srand是个好主意吗?

来自分类Dev

将参数库传递给ViewModel而不是继承自AndroidViewModel是个好主意吗?

来自分类Dev

将未初始化的变量传递给srand是个好主意吗?

来自分类Dev

在Ubuntu上这是个好主意吗?

来自分类Dev

通过引用传递Error对象,而不是从方法中抛出异常,是一个好主意吗?

来自分类Dev

CentOS 7可以使用Zswap吗?如何监控Zswap?这是一个好主意吗?

来自分类Dev

片段将所有导航控件委托给Activity是一个好主意吗?

来自分类Dev

将Any用作Union类型是一个好主意吗?

来自分类Dev

片段将所有导航控件委派给Activity是一个好主意吗?

来自分类Dev

将“ screen -r”放在我的.bashrc中是一个好主意吗?

来自分类Dev

提取大量String文字是一个好主意吗?

来自分类Dev

一个好主意是为此使用复合模式吗?

来自分类Dev

使用NTFS压缩是一个好主意吗?

来自分类Dev

绑定PasswordBox密码不是一个好主意吗?

来自分类Dev

一个好主意是为此使用复合模式吗?

来自分类Dev

将所有帮助程序类合并到一个巨大的类中是一个好主意吗?

来自分类Dev

将加密的密码密钥存储在另一个表中是一个好主意吗?

来自分类Dev

类库中的SignalR集线器?这是一个好主意还是一个坏主意?

Related 相关文章

  1. 1

    别名cd推送-这是一个好主意吗?

  2. 2

    组合实例VBO是一个好主意吗?

  3. 3

    组合实例VBO是一个好主意吗?

  4. 4

    我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

  5. 5

    我可以将循环缓冲区减小到“ 1”吗?这是一个好主意吗?

  6. 6

    通过依赖注入将数据上下文对象传递给控制器是一个好主意吗?

  7. 7

    匿名类实例----这是一个坏主意吗?

  8. 8

    由heroku上的node.js服务的静态文件-这是一个好主意吗?

  9. 9

    使用宏在C中实现通用向量。这是一个好主意吗?

  10. 10

    临时扩展Java中的现有对象-这是一个好主意吗?

  11. 11

    在Mac OS X的哪里设置DYLD_LIBRARY_PATH,这是一个好主意吗?

  12. 12

    将未初始化的变量传递给srand是个好主意吗?

  13. 13

    将参数库传递给ViewModel而不是继承自AndroidViewModel是个好主意吗?

  14. 14

    将未初始化的变量传递给srand是个好主意吗?

  15. 15

    在Ubuntu上这是个好主意吗?

  16. 16

    通过引用传递Error对象,而不是从方法中抛出异常,是一个好主意吗?

  17. 17

    CentOS 7可以使用Zswap吗?如何监控Zswap?这是一个好主意吗?

  18. 18

    片段将所有导航控件委托给Activity是一个好主意吗?

  19. 19

    将Any用作Union类型是一个好主意吗?

  20. 20

    片段将所有导航控件委派给Activity是一个好主意吗?

  21. 21

    将“ screen -r”放在我的.bashrc中是一个好主意吗?

  22. 22

    提取大量String文字是一个好主意吗?

  23. 23

    一个好主意是为此使用复合模式吗?

  24. 24

    使用NTFS压缩是一个好主意吗?

  25. 25

    绑定PasswordBox密码不是一个好主意吗?

  26. 26

    一个好主意是为此使用复合模式吗?

  27. 27

    将所有帮助程序类合并到一个巨大的类中是一个好主意吗?

  28. 28

    将加密的密码密钥存储在另一个表中是一个好主意吗?

  29. 29

    类库中的SignalR集线器?这是一个好主意还是一个坏主意?

热门标签

归档