There is a way to reset lazy var if you want. I think it's probably a bug, but you can access the underlying storage of a lazy var using $_lazy_storage$_{property_name} and set it to nil. For example: class A { lazy var foo: Int = { print("A") return 0 ...