Add builtins.dir()

This commit is contained in:
Felföldy Tibor 2025-01-25 21:13:13 +01:00
parent c4c6922a08
commit dee97fe92a

View File

@ -81,6 +81,39 @@ def sorted(iterable, key=None, reverse=False):
a.sort(key=key, reverse=reverse) a.sort(key=key, reverse=reverse)
return a return a
def dir(obj=None):
"""
dir([object]) -> list of strings
If called without an argument, return the names in the current scope.
Else, return an alphabetized list of names comprising (some of) the attributes
of the given object, and of attributes reachable from it.
If the object supplies a method named __dir__, it will be used; otherwise
the default dir() logic is used and returns:
for a module object: the module's attributes.
for a class object: its attributes.
for any other object: its attributes, its class's attributes.
"""
if obj is None:
return list(globals().keys())
if hasattr(obj, "__dir__"):
return obj.__dir__
attributes = set()
# Set object attributes.
if hasattr(obj, "__dict__"):
attributes.update(obj.__dict__.keys())
# Set type attributes.
if not isinstance(obj, type):
if hasattr(type(obj), "__dict__"):
attributes.update(type(obj).__dict__.keys())
return sorted(attributes)
##### str ##### ##### str #####
def __format_string(self: str, *args, **kwargs) -> str: def __format_string(self: str, *args, **kwargs) -> str:
def tokenizeString(s: str): def tokenizeString(s: str):