此代码...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