Python系列之面向对象编程(一文详解)
面向对象编程(Object-Oriented Programming, OOP)是一种程序设计思想,它利用“类”和“对象”来创建软件系统。在Python中,类和对象是构建面向对象程序的基础。
以下是一些基本概念和示例:
- 类和对象
类是一种复杂的数据类型,它定义了对象的基本结构。对象是类的实例,拥有类所定义的属性和方法。
class MyClass:
def __init__(self, value): # 构造函数
self.attribute = value # 实例属性
def my_method(self): # 实例方法
print(self.attribute)
# 创建一个对象
my_object = MyClass(10)
# 调用方法
my_object.my_method() # 输出: 10
- 继承
继承允许我们定义一个新类,它继承了一个已存在的类的属性和方法。
class Parent:
def my_method(self):
print("Parent method")
class Child(Parent):
pass
# 创建一个子类对象
child = Child()
# 调用继承的方法
child.my_method() # 输出: Parent method
- 多态和多态性
多态是指同一个实体同时具有多种形式。在面向对象编程中,多态性是允许一个接口表现出多种形态,即同一个方法可以根据发送对象的不同而采用多种不同的行为方式。
class Animal:
def speak(self):
raise NotImplementedError("Subclass must implement abstract method")
class Dog(Animal):
def speak(self):
print("Woof")
class Cat(Animal):
def speak(self):
print("Meow")
# 多态性示例
def speak(animal):
animal.speak()
dog = Dog()
cat = Cat()
speak(dog) # 输出: Woof
speak(cat) # 输出: Meow
- 封装
封装是一种信息隐藏技术,它可以帮助我们创建高内聚、低耦合的系统。封装意味着将对象的状态(属性)和行为(方法)打包在一个单独的单元(类)中。
class Encapsulation:
def __init__(self, value):
self.__private_attr = value # 私有属性
def get_private_attr(self): # 公有方法
return self.__private_attr
# 创建一个对象
encap = Encapsulation(10)
# 尝试直接访问私有属性会导致错误
# print(encap.__private_attr) # 错误:'Encapsulation' object has no attribute '__private_attr'
# 通过公有方法访问私有属性
print(encap.get_private_attr()) # 输出: 10
- 属性
属性是类中的特殊方法,它们使得访问对象的属性就像访问普通的属性一样。
class MyClass:
def __init__(self, value):
self.value = value
@property
def value(self):
return self._value
@value.setter
def value(self, new_value):
self._value = new_value
# 创建一个对象
my_object = MyClass(10)
# 使用属性访问
print(my_object.value) # 输出: 10
my_object.value = 20
评论已关闭