이 코드 ...Python3 변수 이름의 간단한 차이가 코드 실행 방식을 바꿀 수 있습니까?
class Person:
num_of_people = 0
def __init__(self, name):
self.name = name
Person.num_of_people += 1
def __del__(self):
Person.num_of_people -= 1
def __str__(self):
return 'Hello, my name is ' + self.name
cb = Person('Corey')
kb = Person('Katie')
v = Person('Val')
다음과 같은 오류 ...
Exception AttributeError: "'NoneType' object has no attribute 'num_of_people'" in <bound method Person.__del__ of <__main__.Person object at 0x7f5593632590>> ignored
를 생성하지만이 코드는하지 않습니다.
class Person:
num_of_people = 0
def __init__(self, name):
self.name = name
Person.num_of_people += 1
def __del__(self):
Person.num_of_people -= 1
def __str__(self):
return 'Hello, my name is ' + self.name
cb = Person('Corey')
kb = Person('Katie')
vb = Person('Val')
유일한 차이점은 마지막 변수 이름이 "vb"vs "v"입니다.
저는 Python을 배우고 있으며 OOP 관련 작업을하고 있습니다.
@StevenRumbalski : 간단히 말해서, 그렇습니다. 그러나 통역관 출입구에서만. –
첫 번째 코드는 예외를 생성하지 않습니다. 완전한 추적을 보여주세요. (수정 : Python 3.3 이상에서는 예외가 생성되지 않습니다. 3.2에서는 예외가 있습니다.) – geoffspear
@Wooble Nah! 그것이 내가 잃어버린 것입니다. – aIKid