不同类的对象相互作用可以吗?
我刚开始学习在Python中使用面向对象编程。我想知道,如果我在一个类的方法中使用另一个类的对象,这样做是否可以。换句话说,当我调用第一个类的方法时,我把第二个类的一个对象作为参数传进去。然后,第一个类的方法可以操作第二个类的对象(比如获取它的属性或使用它的方法)。在Python中这样做可以吗?这样算不算一种不好的编程风格?
在第一个类的方法中创建第二个类的对象可以吗?也就是说,如果我调用第一个类的方法,它会创建第二个类的对象,这样可以吗?
谢谢你们的帮助。
5 个回答
你说的没问题。实际上,在Python中,大多数数据类型(比如字符串、整数、布尔值等)都是对象,所以几乎每个方法都是按照你描述的那种方式工作的。
答案是,这样做不仅没问题,实际上这就是重点所在。
真正不“OK”的情况是,当对象开始互相干扰对方的内部细节时。为了避免这种情况意外发生,可以在那些本来是内部使用的东西前面加一个下划线(或者两个,这样子类也会把它当作内部的)。这样做就像给其他程序员一个小标记,告诉他们这些东西不应该被使用,它们不是官方的接口,可能会发生变化。
如果你在说把一个对象的实例传给另一个对象的方法,那当然是可以的!这也是一种很好的编程习惯。
如果你想了解更多关于良好的面向对象编程的知识,我可以推荐一些书籍:
设计模式:可复用面向对象软件的基础,作者是Erich Gamma、Richard Helm、Ralph Johnson和John M. Vlissides
这本书被称为“四人帮”书,它列出了很多在面向对象代码中经常出现的设计模式。这是一个很好的资源,可以帮助你找到处理某些问题的好方法。
还有一本不错的书:
重构:改善既有代码的设计,作者是Martin Fowler、Kent Beck、John Brant、William Opdyke和Don Roberts
这本书非常适合学习在编写面向对象代码时应该避免的错误,以及当你遇到这些问题时如何修复它们。书中列出了“代码异味”,这些是表明代码设计不好的信号,并提供了一些重构的建议,教你如何修复这些问题,让代码更符合面向对象的原则。