2016-10-22 6 views
0

정의 된 클래스와 동일한 클래스 안에서 기본 함수 (메서드)를 사용하고 싶습니다.Python : 방법 M은 클래스 C의 속성입니다. C에서 어떻게 사용합니까?

왜 그런지 모르지만, self과 함께해야합니다.

이 작동 :

class What(object): 
    def worksOnlyOutside(self, a): 
     print a ** 2 

    def worksOnlyInside(b): 
     print b ** 3 

    worksOnlyInside(2) 
     #prints out 8 

What().worksOnlyOutside(3) 
    #prints out 9 

이 작동하지 않습니다 :

class What(object): 
    def worksOnlyOutside(self, a): 
     print a ** 2 

    def worksOnlyInside(b): 
     print b ** 3 

    worksOnlyOutside(2) 
     #prints out "TypeError: worksOnlyOutside() takes exactly 2 arguments (1 given)" 

What().worksOnlyInside(3) 
    #prints out "TypeError: worksOnlyInside() takes exactly 1 argument (2 given)" 

을 내가 클래스 외부 인스턴스로 원하는 경우, 나는이 필요하다는 것을 이해에서 매개 변수 self. 또한 내부적으로 사용하려면 self을 매개 변수로 제공하는 것을 건너 뛸 필요가 있습니다.

결론 : 클래스 내부에서 사용할 수있는 메소드와 외부 클래스의 속성으로 호출 할 수있는 메소드를 원한다면 어떻게해야합니까?

클래스 Basic Maths은 방법이 squared입니다. int를 squaring하는 것은 당신이 많이하는 일이기 때문에 클래스의 내부와 외부 모두 필요합니다. 두 가지 다른 메소드를 정의하는 것 외에 다른 옵션이 있어야합니다. 하나는 외부에서 사용할 self이고, 하나는 내부에서 사용할 수 없습니다.

감사합니다.

+0

클래스 메서드를 만들려면 worksOnlyOutside 코드가 올바른 것이어야합니다. 클래스 내에서 메소드를 호출하려면 self.worksOnlyOutside (2)를 사용하십시오. – Skycc

답변

0

함수가 인스턴스 메서드 인 경우 첫 번째 매개 변수는 self에 대한 참조 여야합니다.

첫 번째 예제에서 필자는 Python이 메소드를 정적으로 호출하고 첫 번째 매개 변수를 self으로하지 않을 것을 알았습니다. 정적으로 방법을하려는 경우, 인스턴스 방법으로 방법을하려는 첫 번째 매개 변수는 self 수있는 경우

  • self 매개 변수
  • 이 없습니다.