Incosistent behavior when deleting datasets
Why does the code below seemingly work when I copy + paste the whole thing into ipython, when, conversely, I get an error if I run the same commands one-by-one manually with, say, 1 second of spacing between each?

```py
import fiftyone as fo

dataset1 = fo.Dataset("test")
dataset1.persistent = True
dataset1.delete()

# works only if run immediately after delete() ??????
dataset1 = fo.Dataset("test")
```
diff --git a/fiftyone/core/dataset.py b/fiftyone/core/dataset.py
index e14771dde..f90861819 100644
--- a/fiftyone/core/dataset.py
+++ b/fiftyone/core/dataset.py
@@ -195,7 +195,12 @@ class Dataset(foc.SampleCollection, metaclass=DatasetSingleton):
         self.remove_sample(sample_id)
 
     def __getattribute__(self, name):
-        if name in ["name", "deleted", "_name", "_deleted"]:
+        if name.startswith("__") or name in [
+            "name",
+            "deleted",
+            "_name",
+            "_deleted",
+        ]:
             return super().__getattribute__(name)
 
         if getattr(self, "_deleted", False):
['fiftyone/core/dataset.py']