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__等属性,它们在不同的场景和问题中发挥着重要的作用。