File tree Expand file tree Collapse file tree 7 files changed +69
-0
lines changed
Expand file tree Collapse file tree 7 files changed +69
-0
lines changed Original file line number Diff line number Diff line change 1+ # Python's del: Remove References From Scopes and Containers
2+
3+ This folder provides the code examples for the Real Python tutorial [ Python's del: Remove References From Scopes and Containers] ( https://realpython.com/python-del-statement/ ) .
Original file line number Diff line number Diff line change 1+ class Dict (dict ):
2+ def __delitem__ (self , key ) -> None :
3+ print (f"Running .__delitem__() to delete { (key , self [key ])} " )
4+ super ().__delitem__ (key )
Original file line number Diff line number Diff line change 1+ class List (list ):
2+ def __delitem__ (self , index ):
3+ print (f"Running .__delitem__() to delete { self [index ]} " )
4+ super ().__delitem__ (index )
Original file line number Diff line number Diff line change 1+ class Factorial :
2+ def __init__ (self , number ):
3+ self ._number = number
4+ self ._cache = {0 : 1 , 1 : 1 }
5+ self ._factorial = self ._calculate_factorial (number )
6+ del self ._cache
7+
8+ def _calculate_factorial (self , number ):
9+ if number in self ._cache :
10+ return self ._cache [number ]
11+ current_factorial = number * self ._calculate_factorial (number - 1 )
12+ self ._cache [number ] = current_factorial
13+ return current_factorial
14+
15+ @property
16+ def number (self ):
17+ return self ._number
18+
19+ @property
20+ def factorial (self ):
21+ return self ._factorial
22+
23+ def __str__ (self ) -> str :
24+ return f"{ self ._number } ! = { self ._factorial } "
25+
26+ def __repr__ (self ):
27+ return f"{ type (self ).__name__ } ({ self ._number } )"
Original file line number Diff line number Diff line change 1+ class NonDeleteable :
2+ def __init__ (self , value ):
3+ self .value = value
4+
5+ def __delattr__ (self , name ):
6+ raise AttributeError (
7+ f"{ type (self ).__name__ } object doesn't support attribute deletion"
8+ )
Original file line number Diff line number Diff line change 1+ class Person :
2+ def __init__ (self , name ):
3+ self .name = name
4+
5+ @property
6+ def name (self ):
7+ return self ._name
8+
9+ @name .setter
10+ def name (self , value ):
11+ self ._name = str (value ).upper ()
12+
13+ @name .deleter
14+ def name (self ):
15+ raise AttributeError ("can't delete attribute 'name'" )
Original file line number Diff line number Diff line change 1+ class SampleClass :
2+ class_attribute = 0
3+
4+ def __init__ (self , arg ):
5+ self .instance_attribute = arg
6+
7+ def method (self ):
8+ print (self .instance_attribute )
You can’t perform that action at this time.
0 commit comments