代码可视化网站
http://www.pythontutor.com/visualize.html#mode=edit
用梯子访问会快很多
举个例子:
class Book(object):
# 定义类的参数
def __init__(self,book_id, book_name, book_store_count):
self.book_id = book_id
self.book_name = book_name
self.book_store_count = book_store_count
# 重写加法操作
def __add__(self,book):
return self.book_store_count + book.book_store_count
# 创建两个 Book 类的实例:
python_intro_book = Book(1,'python入门书',100)
ml_intro_book = Book(2,'机器学习入门书',200)
# 求两本书的总销量
sales_cnt = python_intro_book + ml_intro_book
print(sales_cnt) # 300
比如这个例子,我一直没看懂第9行的 self.book_store_count + book.book_store_count
是什么意思,直到看到了可视化图,才明白 self, book
是分别指 +
左边和右边的对象。
再比如以下这张图,能清晰看出,主程序中的 lst
和函数中的 lst
指向了同一个对象,因此如果在函数中改变了 lst
,那么回到主程序中, lst
也会相应被改变。
教程
首推廖雪峰,言简意赅,讨论区有不少精华解析
Python 官方中文文档