gpt4 book ai didi

python - 访问方法中的属性 - 我是否将其作为参数传递,还是通过自身直接访问?

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:37 25 4
gpt4 key购买 nike

我是Python新手,尤其是OOP,我想知道使用属性通过方法计算其他属性的正确方法(如果有的话)是什么。

以下哪个版本被认为是好/坏,为什么?

# Version 1 - direct access to class attributes
class CubicSpline:

def __init__(self, control_points):
self.control_points = control_points
self.polynomials = self.get_polynomials(self.control_points)

def get_polynomials(self, control_points):

polynomials = some_function_that_processes(control_points)

return polynomials

# Version 2 - passing attributes as parameters
class CubicSpline:

def __init__(self, control_points):
self.control_points = control_points
self.polynomials = self.get_polynomials()

def get_polynomials(self):

polynomials = some_function_that_processes(self.control_points)

return polynomials

最佳答案

我建议仅在必要时进行计算:

class CubicSpline:

def __init__(self, control_points):
self.control_points = control_points

def get_polynomials(self):
return some_function_that_processes(self.control_points)

据我所知,没有“黄金法则”。当您认为合适时公开该属性,并在该属性多余时公开方法。“当您认为合适时”会随着您的体验而出现。

我建议阅读SOLID OOP 的原则。

编辑

如果可能的话,您应该更喜欢通过 self 访问属性。 some_function_that_processes 方法似乎是外部的,因此它无法访问“self”。

无需在堆栈上为函数参数分配更多空间,代码更具可读性。

关于python - 访问方法中的属性 - 我是否将其作为参数传递,还是通过自身直接访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47908793/

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