我有以下类:
class Point(object):
__slots__= ("x","y","z","data","classification")
def __init__(self,x,y,z,n=None):
self.x = float(x)
self.y = float(y)
self.z = float(z)
self.data = [self.x,self.y,self.z]
def set_classification(self,n):
self.classification = n
p = Point(10,20,30)
p.data
[10.0, 20.0, 30.0]
p.set_classification(0)
p.data
[10.0, 20.0, 30.0]
字符串
我有以下问题:
首先,创建Point对象的参数是x,y
,z
。Classification
是一个辅助参数(有时在文件中报告其他否)。我希望找到一种方法,如果可能的话,在设置分类时使用p.data = [10.0, 20.0, 30.0, 50.0]
或在未设置分类时使用p.data = [10.0, 20.0, 30.0]
。
使用set_classification
def set_classification(self,n):
self.classification = n
型
2条答案
按热度按时间d4so4syb1#
您可以使用
property
来处理分类:字符串
这将为
classification
属性设置一个getter和一个setter;访问classification
属性将转换为第一个方法被调用。设置classification
属性将转换为setter,第二个方法被调用:型
我选择
classification
属性作为这里的属性,但是你也可以将data
作为一个属性。你将哪一个属性作为一个属性取决于使用模式和意图。如果classification
很少更改,将其作为属性会更有效。ie3xauqp2#
Getter和setter方法通常不受欢迎。您可以使用属性来实现这一点,但是我建议始终在返回值中包含
classification
,因为脚本的其他部分可能期望data
始终是4项列表。API应该一致。以下是我使用属性的看法:
字符串