Maison >développement back-end >Tutoriel Python >Un voyage dans la métaprogrammation Python : l'exploration de la magie infinie
python La métaprogrammation est une technique de programmation avancée qui permet aux développeurs de modifier le code Python lui-même au moment de l'exécution. Cela apporte une grande flexibilité et un grand dynamisme à Python, ce qui le rend idéal pour créer des applications complexes et évolutives.
class Meta(type): def __new__(cls, name, bases, attrs): attrs["new_attr"] = "new value" return super().__new__(cls, name, bases, attrs) class MyClass(metaclass=Meta): pass obj = MyClass() print(obj.new_attr)# Output: "new value"
def create_class(name, bases, attrs): return type(name, bases, attrs) def create_instance(cls, *args, **kwargs): obj = cls.__new__(cls) cls.__init__(obj, *args, **kwargs) return obj MyClass = create_class("MyClass", (), {}) obj = create_instance(MyClass)
class MyClass: def __init__(self, name): self.name = name def greet(self): print(f"Hello, {self.name}!") def modify_class(cls): cls.new_attr = "new value" def new_greet(self): print(f"Modified greeting: {self.name}!") cls.greet = new_greet modify_class(MyClass) obj = MyClass("John") obj.greet()# Output: "Modified greeting: John!"
def log_method_calls(cls): def wrapper(self, *args, **kwargs): print(f"Calling method {self.__class__.__name__}.{self.__class__.__qualname__}") return cls.__call__(self, *args, **kwargs) cls.__call__ = wrapper return cls @log_method_calls class MyClass: def __init__(self, name): self.name = name def greet(self): print(f"Hello, {self.name}!") obj = MyClass("John") obj.greet()# Output: "Calling method MyClass.MyClass"
class Proxy(object): def __init__(self, obj): self._obj = obj def __getattr__(self, name): return getattr(self._obj, name) def __setattr__(self, name, value): setattr(self._obj, name, value) class MyClass: def __init__(self, name): self.name = name def greet(self): print(f"Hello, {self.name}!") obj = MyClass("John") proxy = Proxy(obj) proxy.greet()# Output: "Hello, John!"
La métaprogrammation Python fournit aux développeurs des outils puissants, leur permettant de créer des applications dynamiques, flexibles et évolutives. En comprenant et en appliquant habilement les techniques de métaprogrammation, les développeurs peuvent maximiser les capacités de Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!