Python面向对象(二)(构造方法、其它内置方法)
发布人:shili8
发布时间:2025-03-14 05:52
阅读次数:0
**Python 面向对象编程(二)**
在前一篇文章中,我们已经介绍了 Python 面向对象编程的基本概念,包括类、实例、继承等。现在,我们将继续讨论构造方法和其他内置方法。
### 构造方法构造方法是用于创建一个新实例的特殊方法,它在实例被创建时自动调用。构造方法通常用来初始化实例的属性。
**示例代码**
class Person: def __init__(self, name, age): self.name = name self.age = agep1 = Person("John",30) print(p1.name) # Johnprint(p1.age) #30
在上面的例子中,我们定义了一个 `Person` 类,具有两个属性:`name` 和 `age`。构造方法 `__init__` 接收两个参数 `name` 和 `age`,并将它们赋值给实例的对应属性。
### 其它内置方法除了构造方法之外,Python 还提供了许多其他内置方法,可以用于操作类和实例。下面是一些常用的内置方法:
####1. `__str__` 和 `__repr__`
这两个方法用于返回一个字符串表示实例的值。
* `__str__`: 返回一个易于理解的字符串表示。
* `__repr__`: 返回一个原始的字符串表示,通常用于调试和测试。
**示例代码**
class Person: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"{self.name}, {self.age} years old" def __repr__(self): return f"Person(name={self.name}, age={self.age})" p1 = Person("John",30) print(p1) # John,30 years oldprint(repr(p1)) # Person(name=John, age=30)
####2. `__eq__` 和 `__ne__`
这两个方法用于比较两个实例是否相等。
* `__eq__`: 返回一个布尔值,表示两个实例是否相等。
* `__ne__`: 返回一个布尔值,表示两个实例是否不相等。
**示例代码**
class Person: def __init__(self, name, age): self.name = name self.age = age def __eq__(self, other): return self.name == other.name and self.age == other.agep1 = Person("John",30) p2 = Person("John",30) print(p1 == p2) # True
####3. `__lt__`、`__le__`、`__gt__` 和 `__ge__`
这四个方法用于比较两个实例的大小。
* `__lt__`: 返回一个布尔值,表示第一个实例是否小于第二个实例。
* `__le__`: 返回一个布尔值,表示第一个实例是否小于或等于第二个实例。
* `__gt__`: 返回一个布尔值,表示第一个实例是否大于第二个实例。
* `__ge__`: 返回一个布尔值,表示第一个实例是否大于或等于第二个实例。
**示例代码**
class Person: def __init__(self, name, age): self.name = name self.age = age def __lt__(self, other): return self.age < other.agep1 = Person("John",30) p2 = Person("Jane",25) print(p1 < p2) # True
####4. `__hash__`
这个方法用于返回一个哈希值,用于唯一标识实例。
**示例代码**
class Person: def __init__(self, name, age): self.name = name self.age = age def __hash__(self): return hash((self.name, self.age)) p1 = Person("John",30) p2 = Person("Jane",25) print(hash(p1)) #1234567890 (一个随机哈希值)
以上就是 Python 面向对象编程的构造方法和其他内置方法的介绍。这些方法可以帮助你更好地理解类和实例之间的关系,并且可以用于创建更加复杂和有用的类。