PYTHON专题-(5)类的专有方法

什么是__init__函数?

  • __init__函数是Python中的一个特殊方法(也称为构造函数),它在创建一个对象时被调用。它用于初始化对象的属性,并可以接受参数以提供初始化时的数据。每当创建一个类的实例时,Python会自动调用这个方法。
  • 通常,我们在__init__方法中定义对象的属性,并对其进行初始化。这样,在创建对象时就可以直接给属性赋值,而不需要再单独调用其他方法来初始化属性。

什么是__name__函数?

  • __name__是python中的一个预定义变量,主要用于获取当前模块的名称。
  • 当一个python脚本被直接运行时,__name__的值为"main";
  • 当一个python脚本作为模块被导入时,__name__的值为模块的名称。
  • __name__函数常用于判断是否直接执行脚本还是作为模块导入。

什么是__del__函数?

  • del__函数是一个特殊的函数,用于在对象被删除时执行一些清理操作。它是Python中的一个魔术方法(magic method),用双下划线()包围起来。
  • 当一个对象不再被引用或者程序结束时,Python解释器会自动调用该对象的__del__()方法来进行清理工作,例如关闭文件、释放资源等。
  • __del__函数可以被重写,以实现自定义的清理逻辑。但需要注意的是,__del__函数的调用时机是不确定的,不应过度依赖它来管理资源,最好使用上下文管理器或者显式地调用清理方法来管理资源。

什么是__repr__ 函数?

  • __repr__函数是Python中的一个特殊函数,用于定义对象的字符串表示形式。它返回一个可打印的字符串,通常是一个合法的Python表达式,用于表示该对象的状态。
  • __repr__函数在交互式环境中被调用,常用于调试和开发过程中。当调用内置的repr()函数时,会自动调用对象的__repr__函数。

什么是__str__函数?

  • __str__函数是一个内置方法,用于自定义对象的字符串表示。当我们通过print()函数打印一个对象时,实际上是调用了该对象的__str__方法,该方法返回一个字符串,表示对象的信息。在我们自定义一个类时,可以重写__str__方法,以便返回我们所期望的字符串表示。

什么是__setitem__ 函数?

  • setitem 函数是 Python 中的一个特殊方法,用于定义对象的索引赋值操作。当使用方括号对对象进行赋值时,就会调用该方法。
  • setitem 方法接受三个参数:self、key 和 value。self 表示对象自身,key 表示要赋值的索引,value 表示要赋给索引的值。在方法体内,可以根据需要进行相应的操作,比如更新对象的属性或数据结构。
  • 示例:
    class MyList:
        def __init__(self):
            self.data = []
        
        def __setitem__(self, index, value):
            self.data[index] = value
        
        def __getitem__(self, index):
            return self.data[index]
    
    my_list = MyList()
    my_list[0] = 10  # 调用 __setitem__ 方法
    print(my_list[0])  # 调用 __getitem__ 方法,输出 10
    

什么是__getitem__函数?

  • __getitem__是一个特殊方法(也称为魔术方法),用于在Python中定义类的索引操作。它允许对象像列表或字典一样通过索引来访问其元素。当你在类中定义了__getitem__方法时,该类的实例对象就可以通过索引操作符([])来获取元素。
  • __getitem__方法接受一个参数,表示要获取的元素的索引值。它必须返回对象中对应索引的元素值。__getitem__方法使得类的实例对象可以像序列一样进行索引操作。

什么是__len__函数?

  • __len__函数是一个特殊的内置函数,用于返回对象的长度或者元素的个数。在使用len()函数时,实际上是调用了对象的__len__方法。因此,如果想要自定义一个对象,支持len()函数来获取其长度,就需要在对象中实现__len__方法。

么是__call__函数?

  • __call__函数是一个特殊的方法,用于定义一个对象的调用方式。当一个对象被调用时,Python 解释器会自动调用对象的 call 方法,将对象作为函数使用。
  • 在__call__方法中,可以定义对象被调用时的行为。通过定义__call__方法,可以使一个对象具有函数的行为,即可以像函数一样被调用。

什么是__slots__函数?

  • __slots__函数是一个特殊的函数,可以用于限制类的实例对象的属性。它是一个类级别的变量,定义在类的定义体中,作为类的属性,其值为一个列表或元组,包含了实例对象可以拥有的属性的名称。
  • 使用__slots__函数可以有效地减少实例对象的内存使用,因为它限制了实例对象可以拥有的属性的数量和名称。在没有使用__slots__函数的情况下,实例对象可以动态地添加任意的属性,这个灵活性虽然方便,但也导致了实例对象占用大量的内存空间。通过使用__slots__函数,可以固定实例对象可以拥有的属性的数量和名称,从而减少内存的使用。
  • 需要注意的是,__slots__函数不会限制类本身的属性,只会限制实例对象的属性。所以,当我们使用__slots__函数时,需要在类本身的属性中声明要使用的属性。以下是一个使用__slots__函数的示例代码:
    class MyClass: 
        __slots__ = ('attribute1', 'attribute2')

  • 实例对象只能拥有attribute1和attribute2这两个属性,任何尝试添加其他属性的操作都会引发AttributeError异常。

什么是__iter__函数?

  • __iter__函数是一个特殊方法(即双下划线开头和结尾的方法),用于定义一个对象的迭代行为。这个方法需要返回一个迭代器对象,该迭代器对象应该实现__next__方法来定义迭代的下一个值,并且在迭代结束时抛出StopIteration异常。
  • 通过定义__iter__方法,我们可以使对象能够被迭代,例如在for循环中使用。当我们使用for循环迭代一个对象时,其实是调用了该对象的__iter__方法来获取一个迭代器对象,然后通过循环调用迭代器对象的__next__方法来获取每个值。当迭代器对象抛出StopIteration异常时,循环终止。
  • 在Python中,很多内置的数据类型(如列表、元组、字典等)已经实现了__iter__方法,所以它们都是可迭代的。我们也可以自定义类来实现__iter__方法,从而使该类的实例对象也具有迭代的能力。

什么是__add__函数?

  • __add__函数是Python中一个特殊的方法,用于定义对象之间的加法操作。当两个对象通过"+"运算符相加时,会调用其中一个对象的__add__方法来执行加法操作。该方法接收另一个对象作为参数,并返回加法结果。例如,对于两个整数对象a和b,a + b的操作会调用a的__add__方法,将b作为参数传入,计算出加法结果。

什么是__sub__函数?

  • __sub__函数是Python中的一个特殊方法,用于定义两个对象相减的行为。当使用减法运算符(-)对两个对象进行操作时,会调用对应对象的__sub__方法来进行计算。这个方法需要在自定义的类中进行实现,以定义对象相减的逻辑。

什么是__mul__函数?

  • __mul__函数是Python中的特殊方法(也称为魔术方法或双下划线方法),用于定义两个对象进行乘法运算时的行为。当我们使用*运算符对两个对象进行乘法运算时,实际上是调用了其中一个对象的__mul__方法。该方法需要返回两个对象相乘后的结果。

什么是__truediv__函数?

  • __truediv__函数是Python中的一个特殊方法,用于实现除法运算。当使用"/"操作符进行两个对象的除法运算时,Python会调用该对象的__truediv__方法来执行实际的除法运算。如果一个对象没有实现该方法,则会引发TypeError异常。

什么是__mod__函数?

  • __mod__()函数是Python中的魔术方法(magic method),用于定义对象在被取模(进行取余运算)操作时的行为。当我们使用取模运算符(%)对一个对象进行操作时,Python会调用该对象的__mod__()方法来执行取模运算。
  • 该方法接受两个参数:selfother,分别表示被操作对象和取模运算符右侧的值。方法中需要返回一个新的对象,表示取模运算的结果。例如,对于一个自定义的类MyClass,我们可以通过实现__mod__()方法来定义该对象进行取模运算时的行为。下面是一个简单的示例:
    class MyClass:
        def __init__(self, value):
            self.value = value
        
        def __mod__(self, other):
            return self.value % other
    
    obj1 = MyClass(10)
    obj2 = MyClass(3)
    
    result = obj1 % obj2
    print(result)  # 输出1
    
  • 在上述示例中,我们定义了一个名为MyClass的类,该类包含一个属性value和一个__mod__()方法。当我们对两个MyClass对象进行取模运算时,会调用它们的__mod__()方法,计算self.value % other的结果并返回。最终的结果是1。

什么是__pow__函数?

  • __pow__函数是Python内置的一个特殊方法(也称为魔术方法),用于实现对象的乘方运算。当对一个对象使用乘方运算符(**)时,Python会调用该对象的__pow__方法来执行乘方运算。
  • __pow__方法接受两个参数,第一个参数是底数,第二个参数是指数。该方法应该返回底数的指数次幂的结果。如果该方法不存在或返回None,则会尝试使用其他方式进行乘方运算。
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值