Python面向对象编程知识点
1. 初识对象
对象是Python编程中的基本单元,代表现实世界中的实体。每个对象都具有:
属性(数据):描述对象的特征
方法(函数):描述对象的行为
例如,"汽车"可以视为一个对象,其属性包括颜色、型号、排量等,方法包括启动、加速、刹车等。
2. 成员方法
成员方法是定义在类中的函数,用于描述对象的行为。与普通函数的区别是:
第一个参数通常是self,代表调用该方法的对象本身
必须通过对象或类来调用
示例:
class Person:
def say_hello(self):
print("Hello!")
3. 类和对象
类是对象的模板或蓝图,定义了对象的属性和方法;对象是类的实例。
创建类和对象的示例:
# 定义类
class Dog:
# 类属性
species = "哺乳动物"
# 成员方法
def bark(self):
print("汪汪叫")
# 创建对象(实例化)
my_dog = Dog()
your_dog = Dog()
一个类可以创建多个对象,每个对象都是独立的个体。
4. 构造方法
构造方法(__init__)是一种特殊方法,在创建对象时自动调用,用于初始化对象的属性。
示例:
class Person:
# 构造方法
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
def introduce(self):
print(f"我叫{self.name},今年{self.age}岁")
# 创建对象时传入参数
person1 = Person("张三", 20)
person1.introduce() # 输出:我叫张三,今年20岁
5. 其他内置方法
Python提供了许多内置方法,用于实现对象的特殊行为:
__str__:返回对象的字符串表示,用于print()函数
__repr__:返回对象的官方字符串表示,用于调试
__len__:返回对象的长度,用于len()函数
__add__:定义加法运算
__eq__:定义相等比较
示例:
class Book:
def __init__(self, title, pages):
self.title = title
self.pages = pages
def __str__(self):
return f"《{self.title}》"
def __len__(self):
return self.pages
book = Book("Python编程", 300)
print(book) # 输出:《Python编程》
print(len(book)) # 输出:300
6. 封装
封装是将数据和操作数据的方法捆绑在一起,并对外部隐藏内部实现细节的机制。
Python通过命名约定实现封装:
单下划线_开头:表示受保护的成员,建议外部不要访问
双下划线__开头:表示私有成员,会触发名称修饰,外部不能直接访问
示例:
class BankAccount:
def __init__(self, balance):
self.__balance = balance # 私有属性
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def get_balance(self):
return self.__balance
account = BankAccount(1000)
# print(account.__balance) # 错误,不能直接访问私有属性
print(account.get_balance()) # 正确,通过方法访问
7. 继承
继承允许创建一个新类(子类),继承另一个类(父类)的属性和方法,从而实现代码复用和扩展。
示例:
# 父类
class Animal:
def eat(self):
print("吃东西")
def sleep(self):
print("睡觉")
# 子类,继承自Animal
class Dog(Animal):
def bark(self):
print("汪汪叫")
# 子类对象可以调用父类的方法
dog = Dog()
dog.eat() # 输出:吃东西
dog.bark() # 输出:汪汪叫
Python支持多继承,一个类可以同时继承多个父类。
8. 类型注解
类型注解是Python 3.5+引入的特性,用于指定变量、函数参数和返回值的类型,提高代码的可读性和可维护性。
示例:
def add(a: int, b: int) -> int:
return a + b
name: str = "张三"
age: int = 20
scores: list[float] = [90.5, 88.0, 95.5]
类型注解不会影响代码的运行,主要用于静态类型检查和代码提示。
9. 多态
多态是指不同类的对象对同一方法调用做出不同响应的能力,通常与继承结合使用。
示例:
class Cat:
def make_sound(self):
print("喵喵叫")
class Dog:
def make_sound(self):
print("汪汪叫")
class Duck:
def make_sound(self):
print("嘎嘎叫")
# 多态体现:同一方法调用,不同对象有不同响应
def animal_sound(animal):
animal.make_sound()
animal_sound(Cat()) # 输出:喵喵叫
animal_sound(Dog()) # 输出:汪汪叫
animal_sound(Duck()) # 输出:嘎嘎叫
多态提高了代码的灵活性和扩展性,使得程序更容易维护和扩展。