”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > PYTHON:OOP {初学者版}

PYTHON:OOP {初学者版}

发布于2024-11-07
浏览:305

PYTHON: OOP {Beginner

Python:面向对象编程[OOP]:是一种编程范式(模型),使用对象来构建软件一种模拟现实世界实体和关系的方法。这是基于对象可以包含数据和操作该数据的代码的想法。

关于面向对象编程,您需要了解一些关键概念:

  1. 班级
  2. 目的
  3. 属性
  4. 方法
  5. 遗产
  6. 封装
  7. 多态性
  8. 抽象

下面的示例是一个帮助您参考正在解释的概念的示例,并为您提供每个概念在对象内部的外观的图形化概念,如果您开始学习 OOP,这将有所帮助你掌握了每个概念的作用。

class Car:
    def __init__(self, make, model, year, color):
        self.__make = make
        self.model = model
        self.year = year
        self.color = color

    def drive(self):
        print(f"The {self.year} {self.__make} {self.model} is driving")

# GETTER method for make
    def get_make(self):
        return self.__make

# SETTER method for make
    def set_make(self, make):
        self.__make = make


class ElectricCar(Car):
    def __init__(self, make, model, year, battery_size):
        super().__init__(make, model, year)
        self.battery_size = battery_size

    def drive(self):
        print(f"The {self.year} {self.make} {self.model} with a 
{self.battery_size}-kWh battery is driving silently.")

my_car = Car("McLaren Automotive", "Artura Spider", 2024, "Red/Black")
my_electric_car.drive()

什么是类:?
在Python中,类:是创建对象的蓝图。它定义了创建的对象将具有的一组属性和方法。例如,您可以快速定义一个类,如下所示:

class Car:

什么是对象?
在Python中,object是类的实例。它是使用类蓝图创建的,并且可以拥有自己独特的数据。例如,您可以创建一个像这样的对象:

my_car = Car("McLaren Automotive", "Artura Spider", 2024, "Red/Black")
my_electric_car

什么是属性?
在 Python 中,属性是属于类或对象的变量。它们代表对象的状态或数据。属性的示例如下所示:

    self.color = color

什么是方法?
在 Python 中,方法是属于类的函数。它们定义对象可以执行的行为或操作。方法的示例如下所示:
TIP:定义方法时,可以添加pass;暂时这样 python 在运行文件时不会抛出错误。

    def drive(self):
        pass;  

什么是继承?
在Python中,继承是一种新类(子类)从现有类(父类)继承属性和方法的机制。一个例子:

ElectricCar继承自Car

class ElectricCar(Car):

什么是封装?
将数据(属性)和对数据进行操作的方法封装到单个单元(类)中,并限制对某些对象组件的访问。此外,您可以通过在其前面加上双下划线 __ 来使其成为私有变量。此外,您应该提供 getter 和 setter 方法来访问和修改私有变量。
例如,您可以像这样设置私有变量:

self.__make = make

并添加Setter和Getter来访问和修改私有变量

    # Getter method for make
    def get_make(self):
        return self.__make

    # Setter method for make
    def set_make(self, make):
        self.__make = make

Getter方法: get_make方法添加到访问私有变量__make

Setter方法:set_make方法添加到修改私有变量__make

这封装了 make 属性,确保它不能从类外部直接访问,从而提供更好的封装和对属性的控制。

版本声明 本文转载于:https://dev.to/marlonmunoz/python-oop-beginners-edition-4ph5?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-05-04
  • Python环境变量的访问与管理方法
    Python环境变量的访问与管理方法
    Accessing Environment Variables in PythonTo access environment variables in Python, utilize the os.environ object, which represents a mapping of envir...
    编程 发布于2025-05-04
  • 在Pandas中如何将年份和季度列合并为一个周期列?
    在Pandas中如何将年份和季度列合并为一个周期列?
    pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 这个目标是通过组合“年度”和“季度”列来创建一个新列,以获取以下结果: [python中的concate...
    编程 发布于2025-05-04
  • 版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    在时间戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源于遗留实现的关注,这些限制需要对当前的_timestamp功能进行特定的实现。 创建表`foo`( `Productid` int(10)unsigned not n...
    编程 发布于2025-05-04
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-05-04
  • JavaScript计算两个日期之间天数的方法
    JavaScript计算两个日期之间天数的方法
    How to Calculate the Difference Between Dates in JavascriptAs you attempt to determine the difference between two dates in Javascript, consider this s...
    编程 发布于2025-05-04
  • Go语言如何动态发现导出包类型?
    Go语言如何动态发现导出包类型?
    与反射软件包中的有限类型的发现能力相反,本文探索了替代方法,探索了在Runruntime。go import( “ FMT” “去/进口商” ) func main(){ pkg,err:= incorter.default()。导入(“ time”) 如果err...
    编程 发布于2025-05-04
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-05-04
  • 如何检查对象是否具有Python中的特定属性?
    如何检查对象是否具有Python中的特定属性?
    方法来确定对象属性存在寻求一种方法来验证对象中特定属性的存在。考虑以下示例,其中尝试访问不确定属性会引起错误: >>> a = someClass() >>> A.property Trackback(最近的最新电话): 文件“ ”,第1行, AttributeError: SomeClass...
    编程 发布于2025-05-04
  • PHP未来:适应与创新
    PHP未来:适应与创新
    PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。 引言在编程世界中,PHP一直是网页开发的中流砥柱。作为一个从1994年就开始发展...
    编程 发布于2025-05-04
  • 在Go语言中如何简洁定义10的幂常量
    在Go语言中如何简洁定义10的幂常量
    在GO 利用浮点线文字一种简洁的方式是使用浮点文字,该方法是使用floingpoint protals。写作1E3比写作1000更有效。这是一个示例(67个没有空间的字符):的文字用于未构图的整数常数,我们可以将1000用于KB,并用KB将随后的常量乘以KB,如下所示(77个没有空格的字符):,作...
    编程 发布于2025-05-04
  • 如何在Java字符串中有效替换多个子字符串?
    如何在Java字符串中有效替换多个子字符串?
    在java 中有效地替换多个substring,需要在需要替换一个字符串中的多个substring的情况下,很容易求助于重复应用字符串的刺激力量。 However, this can be inefficient for large strings or when working with nu...
    编程 发布于2025-05-04
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-05-04
  • 表单刷新后如何防止重复提交?
    表单刷新后如何防止重复提交?
    在Web开发中预防重复提交 在表格提交后刷新页面时,遇到重复提交的问题是常见的。要解决这个问题,请考虑以下方法: 想象一下具有这样的代码段,看起来像这样的代码段:)){ //数据库操作... 回声“操作完成”; 死(); } ?> ...
    编程 发布于2025-05-04

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3