python的object数据类型
时间: 2023-12-05 17:40:29 浏览: 143
Python中的object是所有类的基类,也就是说,所有的类都是继承自object类的。object类定义了一些基本的方法和属性,这些方法和属性可以被所有的子类继承和使用。在Python中,如果一个类没有指定父类,则默认继承自object类。object类的一些常用方法和属性包括:
- __init__(self):构造函数,用于初始化对象。
- __str__(self):返回对象的字符串表示。
- __repr__(self):返回对象的字符串表示,通常用于调试。
- __eq__(self, other):判断两个对象是否相等。
- __hash__(self):返回对象的哈希值。
- __getattr__(self, name):当访问对象的属性不存在时,会调用该方法。
- __setattr__(self, name, value):当设置对象的属性时,会调用该方法。
- __delattr__(self, name):当删除对象的属性时,会调用该方法。
- __dir__(self):返回对象的属性列表。
下面是一个示例代码,演示了如何定义一个继承自object类的类,并使用其中的一些方法和属性:
```python
class MyClass(object):
def __init__(self, name):
self.name = name
def __str__(self):
return 'My name is ' + self.name
def __eq__(self, other):
return self.name == other.name
def __hash__(self):
return hash(self.name)
def __getattr__(self, name):
return 'Attribute ' + name + ' does not exist.'
def __setattr__(self, name, value):
print('Setting attribute ' + name + ' to ' + str(value))
super().__setattr__(name, value)
def __delattr__(self, name):
print('Deleting attribute ' + name)
super().__delattr__(name)
def __dir__(self):
return ['name']
# 创建一个MyClass的实例
obj = MyClass('Alice')
# 调用__str__方法
print(obj) # 输出:My name is Alice
# 调用__eq__方法
obj2 = MyClass('Alice')
print(obj == obj2) # 输出:True
# 调用__hash__方法
print(hash(obj)) # 输出:-9223372036577588807
# 访问不存在的属性
print(obj.age) # 输出:Attribute age does not exist.
# 设置属性
obj.age = 18 # 输出:Setting attribute age to 18
# 删除属性
del obj.age # 输出:Deleting attribute age
# 查看属性列表
print(dir(obj)) # 输出:['name']
```
阅读全文