此代碼...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」與「v」。
我靠着Python,現在正在OOP的東西上工作。
@StevenRumbalski:總之,是的。但只在口譯員出口處。 –
第一個代碼不會產生該異常。顯示你的完整追蹤。 (更正:它不會在Python 3.3或更高版本中產生這種異常,在3.2中則會產生) – geoffspear
@Wooble Nah!這就是我所缺少的。 – aIKid