{site_name}

{site_name}

🌜 搜索

Python对象协议是一组Python语言规范,用于定义自定义对象的行为,包括如何访问和操作对象的属性和方法

Python 𝄐 0
python对象包括哪两大类,python对象的三个要素,python对象和方法,python对象包括哪些,python对象有哪些,python对象的方法
Python对象协议是一组Python语言规范,用于定义自定义对象的行为,包括如何访问和操作对象的属性和方法。这些协议包括__init__(),__str__(),__repr__(),__eq__(),__hash__()等等,它们可以帮助我们实现自定义的数据类型并使其具有与内置类型相似的行为。

下面是一些常见的Python对象协议及其相应的例子:

1. __init__():初始化方法,用于创建对象时对其进行初始化。


class Person:
def __init__(self, name, age):
self.name = name
self.age = age

person = Person('John', 25)


2. __str__():返回对象的字符串表示形式,可用于打印对象或在调试时使用。


class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def __str__(self):
return f"Name: {self.name}, Age: {self.age}"

person = Person('John', 25)
print(person) # Output: Name: John, Age: 25


3. __repr__():返回一个能够重建对象的字符串表示形式。


class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def __repr__(self):
return f"Person('{self.name}', {self.age})"

person = Person('John', 25)
print(repr(person)) # Output: Person('John', 25)


4. __eq__():用于比较两个对象是否相等。


class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def __eq__(self, other):
if isinstance(other, Person):
return self.name == other.name and self.age == other.age
return False

person1 = Person('John', 25)
person2 = Person('Jane', 30)
person3 = Person('John', 25)

print(person1 == person2) # Output: False
print(person1 == person3) # Output: True


5. __hash__():返回一个整数,用于将对象存储在散列表中。


class Person:
def __init__(self, name, age):
self.name = name
self.age = age

def __hash__(self):
return hash((self.name, self.age))

person1 = Person('John', 25)
person2 = Person('Jane', 30)
person3 = Person('John', 25)

persons_set = {person1, person2, person3}

print(len(persons_set)) # Output: 2