我只是有一個關於OOP編程的簡單問題,我一直難以決定。前提是我正在製作一組非常簡單的幾何類,例如頂點和角度以及矢量對象,但其中一個類,即具體的線類有點不同。它基本上只是我使用一次的方法集合,我從來沒有實際上保存線對象以備後用,也沒有在程序中的其他任何地方回憶數據。用法的例子來證明我的觀點是這樣的:OOP編程風格決定
class Line:
def __init__(self, vertex1, vertex2):
self.start = vertex1
self.end = vertex2
def to_the_left(self, vertex):
"""Check to see if a vertex is to the left of the line segment."""
#code stuff
data = Line(Vertex(0, 0), Vertex(10, 0)).to_the_left(Vertex(5, 5))
我只實例Line(Vertex(0, 0), Vertex(10, 0))
一旦檢索data
。所以我在想,我可能只是有一堆可用的函數,而不是將它們全部包裝到一個類中,但是我對此持懷疑態度,因爲有很多方法必須轉換爲函數。
我想這樣做的另一件事是讓一個Line類,然後所有它的方法轉換成正常功能,像這樣:
#continuing from the code above
def to_the_left(line_start, line_end, vertex):
return Line(line_start, line_end).to_the_left(vertex)
data = to_the_left(Vertex(0, 0), Vertex(10, 0), Vertex(5, 5))
哪種方法你覺得我應該用?
旁註:您應該聲明類如class class(object):'。這被稱爲[新風格類](http://www.python.org/doc/newstyle/),如果點擊該鏈接,您可以閱讀很多好處。 – 2rs2ts
僅僅因爲你現在沒有直接引用'Line'對象*並不意味着你將來不會。也就是說,如何將'Vertex'製作成'Line'工廠? 'Vertex(0,0).make_line_with(Vertex(10,0))' – roippi
(也就是您的'Line'實際上是'Segment's,您應該稱它們爲'Segment') – roippi