python的基类object当中包含那些常用的内置方法
object
在 Python 中,object 类是所有类的基类。它定义了一些内置方法,这些方法在所有对象中都可用。以下是一些常见的 object 类的内置方法及其作用:
__init__(self, ...)- 作用: 构造函数,用于初始化对象。当创建对象时,这个方法会被自动调用。
 - 示例:
1
2
3
4
5class MyClass:
def __init__(self, value):
self.value = value
obj = MyClass(10) 
__del__(self)- 作用: 析构函数,当对象被销毁时,这个方法会被调用。注意,Python 的垃圾回收机制会自动处理对象的销毁,所以这个方法通常不需要手动调用。
 - 示例:
1
2
3
4
5
6class MyClass:
def __del__(self):
print("Object is being destroyed")
obj = MyClass()
del obj # 或者 obj = None 
__str__(self)- 作用: 返回对象的字符串表示,当使用 
print()函数或str()函数时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7class MyClass:
def __str__(self):
return f"MyClass object with value: {self.value}"
obj = MyClass()
obj.value = 10
print(obj) # 输出: MyClass object with value: 10 
- 作用: 返回对象的字符串表示,当使用 
 __repr__(self)- 作用: 返回对象的“官方”字符串表示,通常用于调试。如果 
__repr__没有被定义,Python 会调用__str__。 - 示例:
1
2
3
4
5
6
7class MyClass:
def __repr__(self):
return f"MyClass(value={self.value})"
obj = MyClass()
obj.value = 10
print(repr(obj)) # 输出: MyClass(value=10) 
- 作用: 返回对象的“官方”字符串表示,通常用于调试。如果 
 __eq__(self, other)- 作用: 比较两个对象是否相等,当使用 
==运算符时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8
9
10
11
12class MyClass:
def __eq__(self, other):
if isinstance(other, MyClass):
return self.value == other.value
return False
obj1 = MyClass()
obj1.value = 10
obj2 = MyClass()
obj2.value = 10
print(obj1 == obj2) # 输出: True 
- 作用: 比较两个对象是否相等,当使用 
 __ne__(self, other)- 作用: 比较两个对象是否不相等,当使用 
!=运算符时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8
9
10class MyClass:
def __ne__(self, other):
return not self.__eq__(other)
obj1 = MyClass()
obj1.value = 10
obj2 = MyClass()
obj2.value = 20
print(obj1 != obj2) # 输出: True 
- 作用: 比较两个对象是否不相等,当使用 
 __lt__(self, other)- 作用: 比较两个对象是否小于,当使用 
<运算符时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8
9
10
11
12class MyClass:
def __lt__(self, other):
if isinstance(other, MyClass):
return self.value < other.value
return NotImplemented
obj1 = MyClass()
obj1.value = 10
obj2 = MyClass()
obj2.value = 20
print(obj1 < obj2) # 输出: True 
- 作用: 比较两个对象是否小于,当使用 
 __le__(self, other)- 作用: 比较两个对象是否小于或等于,当使用 
<=运算符时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8
9
10
11
12class MyClass:
def __le__(self, other):
if isinstance(other, MyClass):
return self.value <= other.value
return NotImplemented
obj1 = MyClass()
obj1.value = 10
obj2 = MyClass()
obj2.value = 10
print(obj1 <= obj2) # 输出: True 
- 作用: 比较两个对象是否小于或等于,当使用 
 __gt__(self, other)- 作用: 比较两个对象是否大于,当使用 
>运算符时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8
9
10
11
12class MyClass:
def __gt__(self, other):
if isinstance(other, MyClass):
return self.value > other.value
return NotImplemented
obj1 = MyClass()
obj1.value = 20
obj2 = MyClass()
obj2.value = 10
print(obj1 > obj2) # 输出: True 
- 作用: 比较两个对象是否大于,当使用 
 __ge__(self, other)- 作用: 比较两个对象是否大于或等于,当使用 
>=运算符时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8
9
10
11
12class MyClass:
def __ge__(self, other):
if isinstance(other, MyClass):
return self.value >= other.value
return NotImplemented
obj1 = MyClass()
obj1.value = 20
obj2 = MyClass()
obj2.value = 20
print(obj1 >= obj2) # 输出: True 
- 作用: 比较两个对象是否大于或等于,当使用 
 
__hash__(self)- 作用: 返回对象的哈希值,当对象需要被用作字典的键或集合的元素时,会调用这个方法。
 - 示例:
1
2
3
4
5
6
7
8
9
10
11class MyClass:
def __hash__(self):
return hash(self.value)
obj1 = MyClass()
obj1.value = 10
obj2 = MyClass()
obj2.value = 10
print(hash(obj1)) # 输出: 哈希值
print(hash(obj2)) # 输出: 哈希值 
__bool__(self)- 作用: 返回对象的布尔值,当使用 
bool()函数时,会调用这个方法。如果没有定义__bool__,Python 会尝试调用__len__方法。 - 示例:
1
2
3
4
5
6
7
8
9
10
11class MyClass:
def __bool__(self):
return self.value > 0
obj1 = MyClass()
obj1.value = 10
obj2 = MyClass()
obj2.value = 0
print(bool(obj1)) # 输出: True
print(bool(obj2)) # 输出: False 
- 作用: 返回对象的布尔值,当使用 
 __len__(self)- 作用: 返回对象的长度,当使用 
len()函数时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7class MyClass:
def __len__(self):
return len(self.values)
obj = MyClass()
obj.values = [1, 2, 3]
print(len(obj)) # 输出: 3 
- 作用: 返回对象的长度,当使用 
 __getitem__(self, key)- 作用: 当使用索引操作符 
[]获取对象中的元素时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7class MyClass:
def __getitem__(self, key):
return self.values[key]
obj = MyClass()
obj.values = [1, 2, 3]
print(obj[1]) # 输出: 2 
- 作用: 当使用索引操作符 
 __setitem__(self, key, value)- 作用: 当使用索引操作符 
[]设置对象中的元素时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8class MyClass:
def __setitem__(self, key, value):
self.values[key] = value
obj = MyClass()
obj.values = [1, 2, 3]
obj[1] = 10
print(obj.values) # 输出: [1, 10, 3] 
- 作用: 当使用索引操作符 
 __delitem__(self, key)- 作用: 当使用索引操作符 
[]删除对象中的元素时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8class MyClass:
def __delitem__(self, key):
del self.values[key]
obj = MyClass()
obj.values = [1, 2, 3]
del obj[1]
print(obj.values) # 输出: [1, 3] 
- 作用: 当使用索引操作符 
 __iter__(self)- 作用: 返回一个迭代器对象,当使用 
for循环遍历对象时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8class MyClass:
def __iter__(self):
return iter(self.values)
obj = MyClass()
obj.values = [1, 2, 3]
for value in obj:
print(value) # 输出: 1 2 3 
- 作用: 返回一个迭代器对象,当使用 
 __next__(self)- 作用: 返回迭代器的下一个元素,当使用 
next()函数时,会调用这个方法。 - 示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19class MyClass:
def __init__(self, values):
self.values = values
self.index = 0
def __iter__(self):
return self
def __next__(self):
if self.index < len(self.values):
result = self.values[self.index]
self.index += 1
return result
else:
raise StopIteration
obj = MyClass([1, 2, 3])
for value in obj:
print(value) # 输出: 1 2 3 
- 作用: 返回迭代器的下一个元素,当使用 
 
补充 function
在 Python 中,函数也是对象,它们是 function 类的实例。你可以使用一些内置函数和方法来获取函数的基本信息。以下是一些常用的方法:
__name__- 作用: 返回函数的名称。
 - 示例:
1
2
3
4def my_function():
pass
print(my_function.__name__) # 输出: my_function 
__doc__- 作用: 返回函数的文档字符串(docstring),即函数的注释。
 - 示例:
1
2
3
4
5def my_function():
"""This is a docstring."""
pass
print(my_function.__doc__) # 输出: This is a docstring. 
__annotations__- 作用: 返回函数参数和返回值的注解字典。
 - 示例:
1
2
3
4def my_function(param1: int, param2: str) -> bool:
pass
print(my_function.__annotations__) # 输出: {'param1': <class 'int'>, 'param2': <class 'str'>, 'return': <class 'bool'>} 
__code__- 作用: 返回一个 
code对象,包含了函数的编译代码。 - 示例:
1
2
3
4def my_function():
pass
print(my_function.__code__) # 输出: <code object my_function at 0x...> 
- 作用: 返回一个 
 __defaults__- 作用: 返回一个元组,包含了函数的默认参数值。
 - 示例:
1
2
3
4def my_function(param1, param2=10):
pass
print(my_function.__defaults__) # 输出: (10,) 
__code__.co_varnames- 作用: 返回一个列表,包含了函数的局部变量名。
 - 示例:
1
2
3
4
5def my_function(param1, param2):
local_var = 10
pass
print(my_function.__code__.co_varnames) # 输出: ('param1', 'param2', 'local_var') 
__code__.co_argcount- 作用: 返回函数的参数数量(不包括默认参数)。
 - 示例:
1
2
3
4def my_function(param1, param2):
pass
print(my_function.__code__.co_argcount) # 输出: 2 
inspect.signature()- 作用: 返回一个 
Signature对象,包含了函数的参数信息。 - 示例:
1
2
3
4
5
6
7import inspect
def my_function(param1, param2=10):
pass
sig = inspect.signature(my_function)
print(sig) # 输出: (param1, param2=10) 
- 作用: 返回一个 
 
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 念念不忘,必有回响!










