Python进阶教程之内建属性

本文将围绕Python进阶教程中的内建属性展开讲解,并从多个方面对其进行详细阐述。

一、__name__属性

1、作用:

__name__属性是Python中的一个内建属性,用来指示当前模块的名称。当一个模块被直接运行时,其__name__属性的值为"__main__";当一个模块被其他模块导入时,其__name__属性的值为模块名。

2、示例代码:

if __name__ == "__main__":
    print("This module is running directly.")
else:
    print("This module is imported by other modules.")

二、__doc__属性

1、作用:

__doc__属性是Python中的另一个内建属性,用于获取对象的文档字符串(docstring)。文档字符串是对函数、类、模块等对象的描述性信息,可以通过访问__doc__属性来获取。

2、示例代码:

def add(x, y):
    """
    This function takes two arguments and returns their sum.
    """
    return x + y

print(add.__doc__)

三、__class__属性

1、作用:

__class__属性是Python中类的一个内建属性,用于获取对象所属的类。通过访问__class__属性,可以获取对象的类,并进一步调用类的其他属性和方法。

2、示例代码:

class Person:
    def __init__(self, name):
        self.name = name
      
person = Person("Alice")
print(person.__class__.__name__)  # 输出:"Person"

四、__file__属性

1、作用:

__file__属性是Python中模块的一个内建属性,用于获取模块对应的文件路径。通过访问__file__属性,可以获取模块文件的绝对路径或相对路径。

2、示例代码:

import os

print(os.path.abspath(__file__))  # 输出:当前模块文件的绝对路径

五、__slots__属性

1、作用:

__slots__属性是Python中类的一个内建属性,用于限制实例可以动态添加的属性。通过在类内定义__slots__属性,可以限制实例只能拥有指定的属性,从而节省内存空间。

2、示例代码:

class Person:
    __slots__ = ["name", "age"]

person = Person()
person.name = "Alice"  # 正确
person.age = 25  # 正确
person.gender = "female"  # 错误,__slots__不包含"gender"属性

六、__getitem__和__setitem__属性

1、作用:

__getitem__和__setitem__是Python中的魔术方法,用于实现对象的索引访问和赋值操作。通过定义这两个属性,可以使对象具有类似列表和字典的访问方式。

2、示例代码:

class MyList:
    def __init__(self, *args):
        self.data = list(args)
  
    def __getitem__(self, index):
        return self.data[index]
  
    def __setitem__(self, index, value):
        self.data[index] = value

my_list = MyList(1, 2, 3, 4, 5)
print(my_list[0])  # 输出:1
my_list[0] = 10
print(my_list[0])  # 输出:10

七、__len__属性

1、作用:

__len__属性是Python中的魔术方法,用于获取对象的长度或大小。通过定义__len__属性,可以使对象具备len()函数的功能。

2、示例代码:

class MyList:
    def __init__(self, *args):
        self.data = list(args)
  
    def __len__(self):
        return len(self.data)

my_list = MyList(1, 2, 3, 4, 5)
print(len(my_list))  # 输出:5

八、__iter__和__next__属性

1、作用:

__iter__和__next__属性是Python中迭代器协议的两个魔术方法,用于实现对象的迭代功能。通过定义这两个属性,可以使对象能够使用for循环进行迭代。

2、示例代码:

class MyRange:
    def __init__(self, start, end):
        self.start = start
        self.end = end
  
    def __iter__(self):
        return self
  
    def __next__(self):
        if self.start >= self.end:
            raise StopIteration
        current = self.start
        self.start += 1
        return current

my_range = MyRange(1, 5)
for num in my_range:
    print(num)  # 输出:1 2 3 4

以上是Python进阶教程中内建属性的详细阐述,包括__name__、__doc__、__class__、__file__、__slots__、__getitem__、__setitem__、__len__、__iter__和__next__等属性,它们在不同的场景和问题中发挥着重要的作用。

本文链接:https://my.lmcjl.com/post/11121.html

展开阅读全文

4 评论

留下您的评论.