그 개체에 대한 속성을 정의 할 필요 같은 속성을 구현. 거기서 뭐하는거야, 코멘트라는 클래스를 정의하고 있지만 당신은 그 클래스에 대해 정의 할 개체의 속성을 정의하지 않습니다.
나 작은 예제를 보여 보자 : 위의 예에서
class ExampleClass:
name = "Example Object"
a = ExampleClass() # Init new instance of ExampleClass
print(a.name) # a doesn't own an attribute called "name"
print(ExampleClass.name) # --> "Example Object"
을, 나는 클래스 ExampleClass
를 정의하고 그것을 값 Example Object
의 변수 name
을 제공합니다. 그 후에 객체 a = ExampleClass()
을 만들지 만 name 속성을 얻지 못합니다. 속성이 객체 자체가 아니라 클래스 자체에 정의되어 있기 때문입니다.
이 문제를 해결하려면 __init__
-method 안에 이름을 정의합니다.이 메서드는 해당 클래스의 개체가 만들어 질 때마다 호출됩니다.
class ExampleClass:
def __init__(self):
self.name = "Example Class"
a = ExampleClass() # Init new instance of ExampleClass
print(a.name) # --> "Example Class"
print(ExampleClass.name) # --> ERROR: Exampleclass.name doesn't exist
이 나는 다시
ExampleClass
를 정의하지만 나는 또한 그것을 위해
__init__
방법을 정의합니다. Init 메서드는 하나의 매개 변수 인
self
만을 사용하며이 매개 변수는 자동으로 함수에 전달됩니다. 그것은 창조되고있는 대상입니다. 그런 다음
self.name = "Example Class"
을 설정하고 self는 객체 자체이므로 객체의 속성
name
을 설정합니다.
이 속성에 대한 세터와 게터를 구현하려면 속성을 만들기
는
다음을 추가합니다
class ExampleClass:
def __init__(self):
self.name = "Example Class"
@property
def name(self):
if not self._name:
pass #blabla code here
return self._name
@name.setter
def name(self, value):
#blabla more code
self._name = value
또한, 당신이 너무 매개 변수로 name
을 취할 수있는 __init__
방법을 편집해야합니다.
def __init__(self, name="Example Object"):
self.name = name
한 번만 authorID를 언급하고 다시 표시되지 않습니다. –
@PaulC은 주석으로 작성되었습니다 – Snowman
전체 수업입니까? – Michael0x2a