30/09/2018, 21:12
Về lệnh self trong code này
Mọi người có thể cho em biết dc không, em đang học LPTHW nhé.
Code:
class Engine(object):
def __init__(self, scene_map):
self.scene_map = scene_map
def play(self):
current_scene = self.scene_map.opening_scene()
last_scene = self.scene_map.next_scene('finished')
while current_scene != last_scene:
next_scene_name = current_scene.enter()
current_scene = self.scene_map.next_scene(next_scene_name)
# be sure to print out the last scene
current_scene.enter()
Bài liên quan





Ý bạn là gi?..
Có nghĩa là lệnh self.scene_map = scene_map ấy, mình thấy khó hiểu.
P/s: Có thể thay = các trường hợp còn lại nhé
Dòng này
self.scene_map = scene_mapnghĩa là tạo ra một biến tên làscene_mapcủa object được tạo từ classEngineở thời điểm khởi tạo và gán nó bằng biến cũng tên làscene_mapđược truyền vào tại thời điểm khởi tạoVí dụ sau đoạn code trên là đoạn này:
Nhưng nếu không có dòng
self.scene_map = scene_mapthì bạn không thể truy cậpscene_mapnhư vậy nữa vì biếnscene_mapkhông tồn tại.Nói hình tượng thì dư lày: cái
Enginelà cái khuôn làm bánh,Engine('blabla')là 1 cái bánh được tạo ra từ khuônEnginevới gia vị là'blabla',object_duoc_tao_tu_class_enginelà 1 cái bánh,object_duoc_tao_tu_class_engine.scene_maplà một thuộc tính (kiểu chiều dài, chiều rộng, có ăn được hay không?) của cái bánh đó,selflà chỉ chính cái bánh được tạo từ cái khuôn đóVậy nếu là self.map = scene_map, tức là tạo ra biến map của Obj. Obj đó được class Engine khởi tạo. Và ngay lúc map được tạo thì nó gán với scene_map được truyền vào??
Hack não quá
Đúng roài, có vậy thôi à có thể viết theo kiểu không self như thế này cũng tương tự.
Nó cũng hao hao hàm thôi mà có gì đâu, chỉ khác là nó không dùng thẳng biến truyền vào mà gán vào thuộc tính của object