인스턴스는 다음과 같은 속성이 있습니다 : 사용자가 정의한
self.color = color
self.model_number = model_number
self.average = average
self.milage = milage
그 마스크 방법을; 방법은 더 속성이지만, 파이썬은 속성을 찾을 수있는 클래스에만 먼저 인스턴스에서보고, : 당신은 Lambo.color()
메소드를 호출하지 않는
>>> lambor = Lambo("Red", 2016, 20, 8)
>>> lambor.color
'Red'
, 당신은 문자열 'Red'
를 호출하려고합니다. __init__
에 설정 한 특성의 이름을 바꾸거나 메서드의 이름을 바꿉니다. 당신은 선두를 사용할 수
는 충돌을 제거하고 속성 만 클래스에서 내부적으로 사용되는 것을 문서화 모두에 각각의 이름에 밑줄 :
또는
class Lambo:
def __init__(self, color, model_number, average, milage):
self._color = color
self._model_number = model_number
self._average = average
self._milage = milage
def color(self):
print("Lamborghini color is " + self._color)
def model_number(self):
print("Lamborghini model number is " + str(self._model_number))
def average(self):
print("Lamborghini average is " + str(self._average))
def milage(self):
print("Lamborghini milage is " + str(self._milage))
, 어떤 상태로 방법의 이름을 변경 그것을 하고있다; print_
로 접두사 :
일반적으로
class Lambo:
def __init__(self, color, model_number, average, milage):
self.color = color
self.model_number = model_number
self.average = average
self.milage = milage
def print_color(self):
print("Lamborghini color is " + self.color)
def print_model_number(self):
print("Lamborghini model number is " + str(self.model_number))
def print_average(self):
print("Lamborghini average is " + str(self.average))
def print_milage(self):
print("Lamborghini milage is " + str(self.milage))
lambor = Lambo("Red", 2016, 20, 8)
lambor.print_color()
lambor.print_model_number()
lambor.print_average()
lambor.print_milage()
말하기,이 같은 출력을위한 클래스가 책임을해서는 안됩니다.
class Lambo:
def __init__(self, color, model_number, average, milage):
self.color = color
self.model_number = model_number
self.average = average
self.milage = milage
def __str__(self):
lines = [
"Lamborghini color is " + self.color,
"Lamborghini model number is " + str(self.model_number),
"Lamborghini average is " + str(self.average),
"Lamborghini milage is " + str(self.milage)
]
return '\n'.join(lines)
lambor = Lambo("Red", 2016, 20, 8)
print(lambor)
문제는 당신'__init__' 방법이다 : 당신은 일반적으로 클래스를 다음 인스턴스에
str()
전화를하거나 직접print()
기능에 보내 인쇄, 사용자 친화적 인 문자열을 생성 할 수있는__str__
방법을 줘야 할 것 'color' 인스턴스 속성을 가진'color' 메쏘드가 * shadowing *됩니다. 나는 당신이 인스턴스 속성을 위해'_color'와 같은 것을 사용할 것을 제안한다. 맨 앞에있는 밑줄은 개체의 개인 특성에 사용되는 규칙입니다. – Bakuriu그건 그렇고, 당신의 문제와 관련이 없지만'print'는 당신을 위해 다음과 같이 문자열을 사용합니다 :'print ("Lamborghini model number is, self.model_number)' – cdarke
@cdarke : 오직 파이썬 3이나'from __future__ 가져 오기 print_function'. 문자열 주위의'(...)'이 파이썬 2에서'print' 문에 대해 잘 작동한다는 점을 고려하십시오. –