gpt4 book ai didi

在面向对象编程中传递 Python 参数

转载 作者:太空狗 更新时间:2023-10-30 02:34:28 25 4
gpt4 key购买 nike

如果有人在其他地方问到这个问题,我深表歉意,但我不知道如何提出这个问题。

我是一名物理学家,Python 是我的第一门面向对象语言。我喜欢这种语言,因为它的代码简洁,而且一切都按预期工作(我 ;)。

但是我有一个问题,也许它更多是一种设计选择,但由于我的面向对象编程是自学的并且非常基础,所以我不确定该走哪条路。

那么问题来了:我应该主要传递参数还是直接操作对象数据?因为,例如:

class test(object):

...

def dosomething(self, x, y):
# do someting with x, y involving a lot of mathematic manipulations

def calcit(self):
k = self.dosomething(self.x[i], self.y[i])
# do something else with k

生成的代码比不传递 x, y 而传递 i 并每次都显式地编写 self 要干净得多。您更喜欢什么,或者这是我正在打破的面向对象范式?

在性能方面这应该不会有什么不同,因为参数是通过引用传递的,对吧?

最佳答案

should i mainly pass arguments or manipulate the object data directly

将对象视为具有状态的系统。如果数据属于对象的状态,那么它应该作为成员封装在对象中。否则,它应该作为参数传递给它的方法。

在您的示例中,您应该做什么取决于您是否要对值 xy 不是目的。如果你不这样做,那么你可以让 dosomethingself 中获取 xy

此外,请记住,如果您没有在方法中使用 self,那么它可能根本不应该是一个方法,而应该是一个独立的函数。

performance-wise this shouldn't make a difference since the arguments are passed by reference, right?

此时我根本不会担心性能。

关于在面向对象编程中传递 Python 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8225557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com