我是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
答案 0 :(得分:1)
我建议只在必要时进行计算:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: postgres-deployment
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
containers:
- name: postgres
image: postgres:10.1
ports:
- containerPort: 5432
我所知道的并没有“黄金法则”。在您认为合适时公开属性,并在属性冗余时公开方法。 “当你认为合适时”会带给你经验。
我建议阅读OOP的SOLID原则。
修改
您应该尽可能通过self访问属性。 some_function_that_processes方法似乎是外部的,因此无法访问“self”。
无需为堆栈上的函数参数分配更多空间,代码更具可读性。