2014-04-20 4 views
0

메인 클래스 :파이썬 클래스 구현 질문

class circle: 

    def __init__(self,radius=1): 

     self.radius=radius 

    def getArea(self): 
     return(3.142*self.radius*self.radius) 
    def getPerimeter(self): 
     return(2*3.142*self.myradius) 
    def setradius(self,radius): 
     if radius>0: 
      self.__radius=radius 
    def getRadius(self): 
     return self.__radius 

사용 클래스 :

from Circle import circle 

def main(): 


    c1=circle() 
    c1.radius=-1 
    c2=circle(5) 
    c3=circle(3) 
    print(c1.getArea()) 
    print(c2.getArea()) 
    print(c3.getArea()) 

main() 

안녕하세요 사람들!

나는 단지 수업의 기초를 배우려고했지만, 문제가되지 않았다. 너희들도 도울 수 있길 바래. 미리 감사드립니다 :)

  1. 정확히 사적인 변수는 무엇입니까? 나는 그것에 대해 읽었고 사람들은 그것이 교실 밖에서 접근 할 수 없다고 말한다. 승인! 그게 정확히 무엇을 의미합니까?
  2. 개인 정보는 DATA HIDING과 같은가요?
  3. 정확히 자기가 무엇입니까? 나는 그것에 대해서도 읽었지만 이전의 파이썬 답변에서 이해할 수 없었다. 내가 생각하기에, self은 모든 def 성명서 이후에 쓰여졌다.

다시 한번 감사드립니다! 건배!

+1

'circle' 클래스의 들여 쓰기가 현재 유효하지 않거나 모호합니다. 수정하여 게시물을 편집 할 수 있습니까? – Michael0x2a

+0

@ Michael0x2a 안녕하세요? – Newbie

+0

아니요, 문제는'def __init __()'가 다른'def' 라인과 같은 들여 쓰기 레벨에 있어야한다는 것입니다. – Leigh

답변

2

개인 변수/데이터는 객체 내에서 액세스 할 수있는 개인 인스턴스 변수가없는

파이썬을 맹 글링/이름을 숨기기. 파이썬에서는 데이터 숨기기를 강요 할 수 없습니다. 관습 적으로 파이썬 코드는 하나의 밑줄을 사용하여 public으로 간주되지 않는 이름을 나타내지 만 이름은 해당 객체 외부에서 여전히 액세스 할 수 있습니다. 그러나 이름 맹 글링을 사용하고 있습니다 (두 개의 밑줄이 있습니다). 이름 변경은 다음과 같은 방식으로 식별자를 바꿉니다.

self.__radiusclassname이 클래스 이름 인 경우 self._classname__radius이됩니다.

그러나 맹 글링 된 이름조차도 수업 외부에서 액세스 할 수 있습니다. 맹 글링 된 이름은 클래스 이름이 속성 이름의 일부가되므로 이름 충돌의 가능성을 줄입니다.

자기

self 컨벤션 우리가 예를 들어 사용하는 이름으로 입니다.

class Circle(object): 
    def get_area(self): 
     pass 

클래스는 Circle이며, 우리는이 같은 변수에 Circle의 인스턴스를 할당 할 수 있습니다 : : 이제 우리는 get_area 메소드를 호출하는 경우

c = Circle() # an instance 

, 우리가 그렇게 할 수 있도록이 클래스를 고려 같은 :

:

c.get_area() # note the lack of arguments 

이 다음에 해당

Circle.get_area(c) # instance c is now passed in as the first argument of `get_area`, which our method calls self 

self은 첫 번째 인수로 메소드에 전달 된 인스턴스입니다.