首页 > 编程语言 >python入门(十):面向对象编程

python入门(十):面向对象编程

时间:2023-06-24 19:45:00浏览次数:50  
标签:Animal 入门 python self name 面向对象编程 方法 def speak

Python面向对象编程指南

image

在Python中,面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式。它允许我们通过创建对象、定义类和实现继承等概念来组织和管理代码。了解Python的面向对象编程对于编写可维护、可扩展和可重用的代码至关重要。

类与对象

在面向对象编程中,类是一种蓝图或模板,用于创建对象。对象是类的实例,它具有类定义的属性和方法。以下是一个简单的示例:

# 定义一个Person类
class Person:
    # 初始化方法
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 方法
    def greet(self):
        print("Hello, my name is " + self.name)

# 创建一个Person对象
person = Person("Alice", 25)
person.greet()

在上述示例中,我们定义了一个名为Person的类,它具有nameage属性以及greet方法。然后,我们创建一个Person对象,并调用其greet方法。

注意:

  • 类使用class关键字定义,并按照约定使用首字母大写的驼峰命名法。
  • __init__方法是一个特殊的方法,用于初始化对象的属性。它在创建对象时自动调用。
  • 类中的方法使用普通函数的语法定义,但第一个参数必须是self,它引用当前对象本身。

继承

继承是面向对象编程中的一个重要概念,它允许我们创建新类并从现有类(称为父类或基类)继承属性和方法。以下是一个示例:

# 定义一个基类Animal
class Animal:
    def speak(self):
        print("动物发出声音")

# 定义一个派生类Dog,继承自Animal
class Dog(Animal):
    def speak(self):
        print("汪汪汪")

# 创建一个Dog对象并调用其speak方法
dog = Dog()
dog.speak()

在上述示例中,我们定义了一个基类Animal,它具有speak方法。然后,我们定义了一个派生类Dog,它继承了Animal类,并重写了speak方法。最后,我们创建一个Dog对象,并调用其speak方法。

注意:

  • 继承使用圆括号指定基类,并在派生类中定义新的属性和方法。
  • 派生类可以重写基类中的方法,从而改变其行为。
  • 通过继承,我们可以实现代码的重用和扩展。

封装与访问控制

封装是面向对象编程的一个重要原则,它允许我们将数据和方法包装在类中,并限制对其的访问。在Python中,封装可以通过属性和方法的访问控制来实现。以下是一个示例:

class Person:
    def __init__(self, name, age):
        self._name = name  # 使用单下划线表示属性是受保护的
        self.__age = age  # 使用双下划线表示属性是私有的

    def _internal_method(self):
        print("这是一个受保护的方法")

    def __private_method(self):
        print("这是一个私有的方法")

person = Person("Alice", 25)
print(person._name)  # 访问受保护的属性
person._internal_method()  # 调用受保护的方法

在上述示例中,我们定义了一个Person类,其中有一个受保护的属性_name和一个私有的属性__age。类中还有一个受保护的方法_internal_method和一个私有的方法__private_method。我们可以通过使用单下划线或双下划线来访问受保护或私有属性和方法。

注意:

  • 在Python中,属性和方法的访问控制是基于约定而不是强制执行的。使用单下划线或双下划线只是一种约定,用于指示属性或方法的访问级别。
  • 单下划线表示属性或方法是受保护的,应该在类的内部或子类中使用。但它们仍然可以从外部访问。
  • 双下划线表示属性或方法是私有的,应该只在类的内部使用。它们无法从外部直接访问。

多态性

多态性是面向对象编程的一个重要特征,它允许我们使用不同的对象执行相同的操作。在Python中,多态性通过方法重写和动态类型绑定来实现。以下是一个示例:

class Animal:
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("汪汪汪")

class Cat(Animal):
    def speak(self):
        print("喵喵喵")

def make_animal_speak(animal):
    animal.speak()

dog = Dog()
cat = Cat()

make_animal_speak(dog)  # 输出:汪汪汪
make_animal_speak(cat)  # 输出:喵喵喵

在上述示例中,我们定义了一个基类Animal和两个派生类DogCat。每个类都有一个speak方法,但它们的实现方式不同。然后,我们定义了一个函数make_animal_speak,它接受一个Animal对象,并调用其speak方法。通过传递不同的对象,我们可以实现多态性。

注意:

  • 多态性允许我们根据具体的对象类型来选择执行哪个方法。
  • 在Python中,不需要显式声明或实现多态性。它是通过动态类型绑定来实现的,即在运行时确定方法的实际调用。

标签:Animal,入门,python,self,name,面向对象编程,方法,def,speak
From: https://www.cnblogs.com/PrettyTom/p/17501565.html

相关文章

  • python入门(九):异常处理
    Python异常处理指南原文|大纲|首页在Python中,异常处理是一种重要的技术,用于捕获和处理程序运行时可能出现的错误。通过合理地处理异常,我们可以增加代码的健壮性和可靠性。了解Python的异常处理对于编写高质量的代码非常重要。异常基础异常是在程序运行过程中发生的错误......
  • python入门(八):文件操作
    Python文件操作指南原文|大纲|首页在Python中,文件操作是一项重要的任务。它们允许我们读取和写入文件,处理文本数据和持久化数据。了解Python的文件操作对于处理文件和数据至关重要。打开和关闭文件在进行文件操作之前,我们需要打开文件并在完成操作后关闭文件。以下是打......
  • SpringCloud Alibaba入门3之nacos服务搭建
    我们继续在上一章的基础上学习。https://blog.51cto.com/u_13312531/6539601一、下载nacos-server从https://github.com/alibaba/nacos/releasesopeninnewwindow 下载nacos-server发行版。我们使用1.4.2版本二、启动nacos进入%path%\nacos\bin文件夹,执行cmd命令startup.cmd-m......
  • 用Python脚本实现FFmpeg批量转换
    最近需要用FFmpeg从视频文件中提取出音频信息,但是因为文件太多,所以查各种资料写了个Python脚本,实现批量的从视频中提取音频。当然了,脚本框架是通用的,可以通过替换FFmpeg命令实现各种其它操作。一、批量处理Python脚本importosforroot,dirs,filesinos.walk(r"E:\tmp"):......
  • python学习日志,五大容器的比较
    列表的使用:列表.append(元素):向列表中追加一个元素列表.extend(容器):将数据容器的内容依次取出,追加到列表尾部列表.insert(下标,元素):在指定下标处,插入指定的元素del列表[下标]:删除列表指定下标元素列表.pop(下标):删除列表指定下标元素列表.remove(元素):从前向后,翻除此......
  • Python random模块
    Pythonrandom模块random模块用于生成随机数importrandomprint(random.random())print(random.randint(1,100))print(random.randrange(1,100))输出结果:0.182467957909153044666randint和randrange的区别##########randint##########defrandint(self,......
  • python实现文件批量压缩
    python实现文件夹下文件的批量压缩初级版本压缩之前压缩之后:源代码使用的时候只需要把“directory_path=r'D:\桌面\ceshi'”这里的路径修改成对应的文件夹即可importosimportzipfiledefzip_files_in_directory(directory):#获取目录中的文件列表fi......
  • Python configparser模块
    Pythonconfigparser模块用于生成和修改常见配置文档,当前模块的名称在python3.x版本中变更为configparser。常见文档格式如下[DEFAULT]ServerAliveInterval=45Compression=yesCompressionLevel=9ForwardX11=yes[bitbucket.org]User=hg[topsecret.se......
  • 0.组织Python代码的技巧
    组织Python代码技巧英文版链接一.构建Python项目首先关注目录结构、文件命名和模块组织。我建议把所有的模块都放在src目录下,所有测试都和它并排。python项目的组织结构---建议把所有的模块都放在src目录下,所有测试都和它并排。如下图:<project>├──src│├......
  • Python json和pickle模块
    json和pickle模块用于序列化的两个模块序列化模块:json和picklejson,用于字符串和python数据类型间进行转换pickle,用于python特有的类型和python的数据类型间进行转换Json模块提供了四个功能:dumps、dump、loads、loadpickle模块提供了四个功能:dumps、dump、loads、......