OOP编程中常用的magicmethods:__get()、__set()、__construct()、__destruct()
在OOP编程中,magic methods是一组在类定义中具有特殊行为的函数。这些方法的名称以双下划线开头和结尾,并且它们在类实例的生命周期中会自动调用。
在Python中,这些magic methods包括__init__()、__getattr__()、__setattr__()和__del__()等。下面我们将重点介绍其中的四个magic methods:__get()、__set()、__construct()、__destruct()。
1.__get()
__get()是类中最常用的magic method之一,它允许我们在调用对象属性时自定义行为。我们可以通过__get()方法来获取对象的属性值,并对其进行一系列的处理。比如,在一个Person类中,我们可以通过__get()方法来对年龄这个属性进行判断,如果年龄大于18,则返回True,否则返回False。
示例代码:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
def __get__(self, instance, owner):
if self._age >= 18:
return True
else:
return False
person = Person("Tom", 19)
print(person._age) # 19
print(person._name) # Tom
print(person) # True
上述代码实现了对于Person类中年龄属性的判断,如果实例的年龄属性大于18,则返回True。
2.__set()
__set()方法允许我们在设置对象属性时自定义行为。我们可以通过在类中定义__set()方法来限制对象属性的值,或者在对象属性值发生改变时进行其他操作。
示例代码:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
def __set__(self,instance,value):
if value < 0:
raise ValueError("Age can not be negative.")
self._age = value
person = Person("Tom", 19)
person._age = -1 # 报错 ValueError: Age can not be negative.
上述代码在赋值操作时,如果年龄小于0,会抛出异常并终止程序的执行。
3.__construct()
__construct()方法是在类实例化时自动调用的初始化方法。该方法允许我们在创建类实例时对其进行一系列的初始化操作。
示例代码:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
print("Instance of Person has been created.")
def __construct__(self, name, age):
self._name = name
self._age = age
print("Instance of Person has been created.")
person = Person("Tom", 19)
# Output: Instance of Person has been created.
# Instance of Person has been created.
上述代码中,我们在Person类中定义了__construct()方法,并在创建类实例时调用了它。在输出中可以看到,__init__()和__construct__()方法都被成功的执行了。
4. __destruct__()
__destruct()方法是Python中最常用的magic method之一,它在类实例结束生命周期时被自动调用。该方法是一个非常重要的方法,因为我们可以在该方法中对类实例进行垃圾回收或释放资源等操作。
示例代码:
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
def __destruct__(self):
print("Instance of Person has been destroyed.")
person = Person("Tom", 19)
del person
# Output: Instance of Person has been destroyed.
上述代码中当我们删除变量person时,Python会自动调用对象的__destruct__()方法,并输出“Instance of Person has been destroyed.”。
总结:
magic methods是Python中OOP编程中非常重要的概念,这些方法拥有特殊的名称和行为,可以帮助我们自定义类的行为。在本文中,我们讲解了四个常用的magic methods: __get()、__set()、__construct()、__destruct(),并且给出了相应的示例代码。当然,这四种方法只是在Python OOP编程中的一个开端,掌握OOP编程中的magic methods,可以让我们在日常编程中操作其他类似方法更加得心应手。
