首页 > 编程语言 >python面向对象的四大支柱:抽象、封装、继承、多态

python面向对象的四大支柱:抽象、封装、继承、多态

时间:2024-04-03 16:31:00浏览次数:30  
标签:__ name python self 多态 面向对象 方法 class def

1. 抽象

在面向对象编程中,抽象是指将类的属性和方法捆绑在一起,形成一个整体。抽象类无法实例化,但可以作为其他类的基类或父类。在Python中,我们使用abc模块定义抽象类,其中至少包含一个抽象方法。抽象方法是无法直接调用但可以被子类覆盖的方法。

例如,我们可以定义一个Animal类,然后派生出具体的动物类(如CatDog),每个类都有自己的属性和方法。

class Animal:
    def __init__(self, name):
        self.name = name

class Cat(Animal):
    def make_sound(self):
        return "Meow"

class Dog(Animal):
    def make_sound(self):
        return "Woof"

cat = Cat("Kitty")
dog = Dog("Buddy")

print(f"{cat.name} says: {cat.make_sound()}")
print(f"{dog.name} says: {dog.make_sound()}")

2. 封装

封装是隐藏对象内部细节的机制。通过封装,我们可以确保数据的安全性和代码的可维护性。在Python中,我们使用访问修饰符来实现封装,包括公有属性和方法以及私有属性和方法。公有属性和方法可以被类的外部访问,而私有属性和方法只能在类的内部访问。

例如,我们可以使用私有属性和方法来实现封装。

class Person:
    def __init__(self, name, age):
        self.__name = name  # 私有属性
        self.__age = age

    def get_name(self):
        return self.__name  # 公有方法

    def set_name(self, new_name):
        self.__name = new_name  # 公有方法

person = Person("Alice", 30)
print(person.get_name())  # 输出: Alice
person.set_name("Bob")
print(person.get_name())  # 输出: Bob

3. 继承

继承允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。子类可以继承父类的特性,并在此基础上添加自己的新特性。Python支持单继承和多继承,使得代码更具灵活性和可维护性。

例如,我们可以创建一个Teacher类继承自Person类。

class Person:
    def __init__(self, name):
        self.name = name

class Teacher(Person):
    def teach(self, subject):
        return f"{self.name} teaches {subject}"

teacher = Teacher("Mr. Smith")
print(teacher.teach("Math"))  # 输出: Mr. Smith teaches Math

4. 多态

多态是指不同的子类对象调用相同的父类方法,产生不同的执行结果。多态性使得代码更加通用,兼容性更强。通过方法重写和方法重载,我们可以实现多态。

标签:__,name,python,self,多态,面向对象,方法,class,def
From: https://blog.csdn.net/u012730525/article/details/137235957

相关文章

  • python基础——基础代码每日复习002
    面向对象:#!/usr/bin/python#-*-coding:UTF-8-*-classEmployee:'所有员工的基类'empCount=0def__init__(self,name,salary):self.name=nameself.salary=salaryEmployee.empCount+=1defdisplayCount(sel......
  • python发邮件(文件内容在邮件中展现)
     python3.6#!/usr/bin/envpython#coding=utf-8importsmtplibfromemail.mime.textimportMIMETextfromemail.mime.multipartimportMIMEMultipartfromemail.headerimportHeaderimportdatetimeimporttimemail_host="mail.test.com:465"ma......
  • 03 Python进阶:MySQL
    mysql-connector安装要在Python中使用MySQL数据库,你需要安装MySQL官方提供的MySQLConnector/Python。下面是安装MySQLConnector/Python的步骤:首先,确保你已经安装了Python,如果没有安装,可以在Python官网(https://www.python.org)下载并安装最新版本的Python......
  • 使用 Python 模拟布朗运动(和股票价格)
    一、说明        本文先介绍布朗运动的概念,紧接着应用布朗方程到股票的随机斩落模型。进而用python实现,并给出各种各样的条件模型。从中烘托出股票模型的规律所在。二、什么是布朗运动?   ......
  • huggingface模型使用Python,智普清言,图生文,文本转语音
    完整代码fromtransformersimportpipelinefromzhipuaiimportZhipuAIclient=ZhipuAI(api_key='智普清言的API_KEY')importjsonimportrequestsdeftext2speech(message):headers={"Authorization":"Bearerhuggingface的token"}AP......
  • Python学习从0到1 day20 第二阶段 面向对象 ② 封装
    缘分朝生暮死犹如露水          ——24.4.1学习目标:1.理解封装的概念2.掌握私有成员的使用一、面向对象三大特性:面向对象编程,是许多编程语言都支持的一种编程思想简单理解是:基于模板(类)去创建实体(对象),使用对象完成功能开发面向对象包含三大主......
  • Python实现动态进度条
    ★进度条基本实现功能代码importsysimporttime#进度条-功能演示defprogress_bar_demo(title,symbol):forperinrange(1,101):print("\r",end="")print(f"【{title}】:{per}%:{symbol*(per//2)}",end=""......
  • mysql基于二次注入(基于时间)盲注,python脚本
    根据mysql二次注入原理,存储型注入利用,先注册,再登陆、再调用修改密码,完成自动时间盲注类型判断,实现脱裤借用:“孤桜懶契”大佬的脚本#--coding:UTF-8--#Author:孤桜懶契#Date:2021/8/10#blog:gylq.gitee.ioimportrequestsimporttimeflag=""#***************......
  • Python框架下的qt设计之JSON格式化转换小程序
    JSON转换小程序代码展示:主程序代码:fromPyQt6.QtWidgetsimport(QApplication,QDialog,QMessageBox)importsysimportjsonclassMyJsonFormatter(jsonui.Ui_jsonFormatter,QDialog):#jsonui是我qt界面py文件名def__init__(self):supe......
  • Python-脆弱性信息收集
    公司做系统集成,有搜集产品脆弱性需求,包括cisco,vmware,redhat,F5等厂家。如:SecurityAdvisories具体需求:1.每天定时搜集十来个网络设备厂家网站新发布的脆弱性2.根据产品和等级不同,邮件发给不同公司人员,内容包括:新脆弱性链接,脆弱性标题,CVE编号,发布时间等2.不能发送重复脆弱性......