16-面向对象编程OOP 02
1 假如要统计实例化的对象的个数,应该将统计变量放入类名下面,而不是__init__()的下面。跟具体对象关联的成员放在__init__()下面,否则放在类名下面。
class Book():
count = 0
def __init__(self, title, price = 0.0, author = None):
self.title = title
self.price = price
self.author = author
Book.count += 1
def __repr__(self):
print('<图书:{} at 0x{}>'.format(self.title, id(self)))
def __str__(self):
print('[图书:{} 价格:{}]'.format(self.title, self.price))
def print_info(self):
print(self.title, self.price, self.author)
if __name__ == '__main__':
book1 = Book('Python', 29.9, 'peter')
book2 = Book('flask')
book3 = Book('asp.net')
print('图书数量:{}'.format(Book.count))
>>>图书数量:3
当删除某个对象时,怎样将统计变量减一:
class Book():
count = 0
def __init__(self, title, price = 0.0, author = None):
self.title = title
self.price = price
self.author = author
Book.count += 1
def __del__(self):
Book.count -= 1
def __repr__(self):
print('<图书:{} at 0x{}>'.format(self.title, id(self)))
def __str__(self):
print('[图书:{} 价格:{}]'.format(self.title, self.price))
def print_info(self):
print(self.title, self.price, self.author)
if __name__ == '__main__':
book1 = Book('Python', 29.9, 'peter')
book2 = Book('flask')
book3 = Book('asp.net')
del(book3)
print('图书数量:{}'.format(Book.count))
>>>图书数量:2
如果定义了一个属于类的成员而不是属于实例的成员,既可以通过类名来调用,也可以通过实例名来调用:
class Book():
count = 0
def __init__(self, title, price = 0.0, author = None):
self.title = title
self.price = price
self.author = author
Book.count += 1
# def __del__(self):
# Book.count -= 1
def __repr__(self):
print('<图书:{} at 0x{}>'.format(self.title, id(self)))
def __str__(self):
print('[图书:{} 价格:{}]'.format