2013-02-07 4 views
0

편집 : 내 실수 - 다른 메소드 이름 (밑줄이 있음)은 본문에 패스 만있는 다른 위치에있었습니다. 바보 야. 닫으십시오.메소드 이름의 밑줄 [바보 같은 실수]

두 개의 메서드가있는 클래스가 있는데, 각각 간단한 문자열을 반환합니다. 이 두 가지 방법의 약간의 질적 차이는 이름에 밑줄이있는 반면에 다른 하나는 없습니다라는 것입니다. 그러나 밑줄이있는 문자는 호출 할 때 문자열을 반환하지 않습니다. 방법 이름에 밑줄을 사용하면 PEP 8 guidelines regarding method names을 따르는 것 같습니다.

저는 Python tutorial on classes을 철저히 읽고 있었지만 메서드 이름 안에 밑줄을 사용하면 동작에 차이점은 언급하지 않았습니다. 밑줄을 제거하면 문자열이 반환됩니다.

이 문제의 원인은 무엇입니까? 내가 파이썬 3.2.3를 사용하고 있습니다

class Board: 
    def f(self): 
     return 'Hello' 
    def print_board(self): 
     return 'Hello' 

:

여기 내 코드입니다.

+1

이것을 설명하는 전체 프로그램을 게시 할 수 있습니까? – ecatmur

+0

이 코드로 재생산 할 수 없습니다. 두 메서드를 모두 호출하면 예상대로 작동합니다. –

+0

죄송합니다 - 동일한 이름을 가진 다른 메서드를 실행했지만 실행 코드가 전혀 없음을 알았습니다. 어리석은 질문에 사과드립니다. – 5th

답변

0

그것은 파이썬 3.2.1와 3.3.0와 나를 위해 잘 작동 :

class Board: 
    def f(self): 
     return 'Hello' 
    def print_board(self): 
     return 'Hello' 


b = Board() 
print(b.f()) 
print(b.print_board()) 

는 윈도우에서 실행, 그것은 인쇄 :

... 
    def print_board(self): 
     print('Hello') 
:
c:\tmp\_Python>c:/python32/python a.py 
Hello 
Hello 

c:\tmp\_Python>c:/python33/python a.py 
Hello 
Hello 

이 아마도 당신이 쓰고 싶다

전화 번호 :

... 
b.print_board() 
+0

편집을 참조하십시오. 그것은 바보 같은 실수였습니다. 동일한 이름의 또 다른 (그러나 비어있는) 메소드가있었습니다. 나는 수업의 틀린 부분을 시험 할 때 자신을 보지 못했다. – 5th

+0

나는 본다. 이러한 경우에는 필림 도구가 유용 할 수 있습니다. 다음은 온라인 버전 http://antares.sip.ucm.es/cesar/pylint/입니다. 또한 함수 정의에서 중복을 찾습니다. – pepr

+0

내가 대답을 받아 들일 것인지 말 것인지를 모르는 사이에 받아 들일 수밖에 없었다. 처음부터의 질문은 존재하지 않는 문제에 관한 것이라는 점을 감안할 때 좋은 대답이라고 생각해야합니다 :) – 5th