Python面向对象详解(非常详细)
面向对象编程(OOP)是Python的核心特性之一。以下是Python面向对象编程的一些基本概念和示例:
- 类和实例
类是一个模板,代表了某一种类型的对象。实例是根据类创建出来的一个具体的对象。
class MyClass:
def __init__(self, value): # 构造函数
self.attribute = value # 实例属性
def my_method(self): # 实例方法
print(self.attribute)
obj = MyClass(10) # 创建一个实例
obj.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")
dog = Dog()
cat = Cat()
animals = [dog, cat]
for animal in animals:
animal.speak()
# 输出:
# Woof
# Meow
- 封装
封装是将对象的状态(属性)和行为(方法)打包在一起,隐藏对象的内部实现细节。
class BankAccount:
def __init__(self, initial_balance=0):
self.__balance = initial_balance
def deposit(self, amount):
self.__balance += amount
def withdraw(self, amount):
self.__balance -= amount
if self.__balance < 0:
raise ValueError("Withdrawal exceeds balance")
def get_balance(self):
return self.__balance
account = BankAccount(1000)
account.deposit(500)
account.withdraw(400)
print(account.get_balance()) # 输出: 1500
- 属性
属性可以是方法的样子,但当它作为属性被访问时,它会表现得像是一个数据属性。
class MyClass:
def __init__(self, value):
self._value = value
def get_value(self):
return self._value
def set_value(self, value):
self._value = value
def del_value(self):
del self._value
value = property(get_value, set_value, del_value, "Description of value")
obj = MyClass(10)
print(obj.value) # 获取值
obj.value = 20 # 设置值
del obj.value # 删除值
- 继承 builting Types
Python 允许开发者对内置类型进行子类化。
class PositiveList(list):
def __init__(self, *args):
super().__init__()
self.extend(args)
self.append(0)
def __setitem__(self, key, value):
if value < 0:
评论已关闭