2010-06-29 27 views
0

我需要python中的以下結構。如何在Python中做這個等價的C#OOP?

public class Circle 
{ 

    int member1; 
    int member2; 
    int member3; 

    public Circle(member1) 
    { 
     this.member1 = member1; 
     initializeRest();  
    } 

    private intializeRest() 
    { 

     //do lot of computation to get result1 & result2 
     this.member2 = result2; 
     this.member3 = result2; 

    } 

} 
+0

這不是OOP。 – SLaks 2010-06-29 13:46:52

回答

7
class Circle: 
    def __init__(self, member1): 
     self.member1=member1 
     self.rest() 

    def rest(self): 
     self.member2=result2 
     self.member3=result2 
+2

即使在Python 2.x中,您也可以從'object'繼承來獲得新的類。 – Philipp 2010-06-29 13:47:58

1

Python沒有強制私家任何東西;讓其他人知道某個方法/函數/類/什麼是你私有的慣例是用一個前導下劃線作爲它的前綴。第三方程序可以使用它,如自動文檔系統,以及IDLE中的help()來忽略這些_names。

您的代碼將翻譯是這樣的:

class Circle(object):    # in Python 3 you don't need `object` 
    member1 = None     # not needed since all three are initialized 
    member2 = None     # in __init__, but if you had others that 
    member3 = None     # weren't this is how you would do it 
    def __init__(self, member1): 
     self.member1=member1 
     self._rest() 
    def _rest(self): 
     # lots of computing.... 
     self.member2=result2 
     self.member3=result2 

考慮你的意見的代碼,但是,你會一樣好關,使_rest__init__一部分...

class Circle(object):    # in Python 3 you don't need `object` 
    def __init__(self, member1): 
     self.member1=member1 
     # lots of computing.... 
     self.member2=result2 
     self.member3=result2