Python - 面向对象编程 - 什么是对象和类

简介: Python - 面向对象编程 - 什么是对象和类

面向对象编程


  • Object Oriented Programming,简称 OOP,是一种程序设计思想
  • OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法

 

Python里面有一句话:万物皆是对象


在编程领域中,通常把现实世界中的实体称为对象,例如:

  • 美国总统特朗普
  • 中国明星成龙
  • 上海中心大厦
  • 北京中信大厦

对象指的是一个具体的实体,不用于指代一个抽象的群体

  • 小菠萝是一个具体的人,所以可以说小菠萝是一个对象
  • 它是一个中国人,但中国人是一个抽象的概念,指的是一群人
  • 所以不能说中国人是一个对象

类似的,上海中心大厦、北京中信大厦这些具体的大厦可以被称为对象,但是不能说大厦是一个对象

 

对象的属性和行为


现实世界中的实体有属性和行为,如下列举了特朗普和小菠萝的属性和行为

对象 属性 行为
特朗普 姓名、年龄 自我介绍
小菠萝 姓名、年龄 自我介绍

行为又被称为方法,它是对属性的操作

包括读取操作和修改操作,例如,在特朗普的自我介绍行为中,会读取他的属性:姓名和年龄

 

Python 对象


对象栗子

# 字符串 
'Hello'
# 列表 
['www', 'poloyy', 'com']
# 元组 
('www', 'poloyy', 'com')
# 字典 


对象的属性

>>> string = 'Hello'
>>> print(string.__doc__)
str(object='') -> str
str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. 
>>> list = ['a', 'b', 'c']
>>> print(list.__doc__)
list() -> new empty list
list(iterable) -> new list initialized from iterable's items


__doc__ 是属性,字符串、列表都有这个属性

 

对象的行为

>>> string = 'Hello'
>>> string.upper()
'HELLO'
>>> list = ['a', 'b', 'c']
>>> list.append('d')
>>> list
['a', 'b', 'c', 'd']


  • upper() 是字符串的方法,也叫行为
  • append() 是列表的方法

 

什么是类


类的定义

  • 在现实世界中,具体的实体被称为对象
  • 观察这些对象的属性和行为,发现可还是用相同的特征去描述一类对象
对象 属性和行为
美国总统特朗普 姓名、年龄、工作
中国明星成龙 姓名、年龄、工作
上海中心大厦 高度、业主、维护
北京中信大厦 高度、业主、维护

现实生活中

  • 可以使用【姓名、年龄、工作】 等特征去描述特朗普和成龙这一类对象,因为都是人
  • 使用【高度、业主、维护】等特征去描述上海中心大厦、北京中信大厦这一类对象,因为都是大厦

 

编程世界中

  • 类是对一组具有相同属性和行为的对象的抽象
  • 【人】是一个抽象的概念,它是一个类或类别,描述了具有【姓名、年龄、工作】等特征的一组对象
  • 【大厦】是一个抽象的概念,它是一个类或类别,描述了具有【高度、业主、维护】等特征的一组对象

 

类和对象的区别

  • 对象是一个具体的实体,比如【小菠萝】是一个对象,是一个具体的人
  • 类是一组具有相同特征的对象,【小菠萝】【成龙】【特朗普】的都是一个具体的人,而人是一个类

 

类和对象的关系

  • 对象属于某个类,对象也可以不属于某个类
  • 【小菠萝】是一个人,属于人类,但不是一个大厦,不属于大厦类
相关文章
|
1月前
|
Python
python对象模型
这篇文章介绍了Python中的对象模型,包括各种内置对象类型如数字、字符串、列表、字典等,以及如何使用`type()`函数来查看变量的数据类型。
|
30天前
|
Python
探索Python中的魔法方法:打造你自己的自定义对象
【8月更文挑战第29天】在Python的世界里,魔法方法如同神秘的咒语,它们赋予了对象超常的能力。本文将带你一探究竟,学习如何通过魔法方法来定制你的对象行为,让你的代码更具魔力。
39 5
|
1天前
|
测试技术 数据库 开发者
Python作为一种谦逊的编程语言:对象自省机制的探讨
Python的自省机制是该语言的一个强大特性,为开发者提供了深入了解和操作对象的能力。它增强了Python的灵活性,使得开发者可以更加精准地控制程序的行为。然而,合理利用自省能力,避免其成为代码复杂性的来源,是每个Python开发者需要考虑的问题。通过熟练运用Python提供的自省工具和技巧,可以更好地设计和实现高效、易维护的Python应用。
8 2
|
2天前
|
关系型数据库 MySQL Python
mysql之python客户端封装类
mysql之python客户端封装类
|
3天前
|
Python
python 类中的内置方法
python 类中的内置方法
|
8天前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
11天前
|
Python
全网最适合入门的面向对象编程教程:Python函数方法与接口-函数与方法的区别和lamda匿名函数
【9月更文挑战第15天】在 Python 中,函数与方法有所区别:函数是独立的代码块,可通过函数名直接调用,不依赖特定类或对象;方法则是与类或对象关联的函数,通常在类内部定义并通过对象调用。Lambda 函数是一种简洁的匿名函数定义方式,常用于简单的操作或作为其他函数的参数。根据需求,可选择使用函数、方法或 lambda 函数来实现代码逻辑。
|
1天前
|
Python
Python类中属性和方法区分3-8
Python类中属性和方法区分3-8
|
30天前
|
Python
Python 中的面向对象编程 (OOP)
【8月更文挑战第29天】
25 7
|
29天前
|
机器学习/深度学习 PHP 开发者
探索PHP中的面向对象编程构建你的首个机器学习模型:以Python和scikit-learn为例
【8月更文挑战第30天】在PHP的世界中,面向对象编程(OOP)是一块基石,它让代码更加模块化、易于管理和维护。本文将深入探讨PHP中面向对象的魔法,从类和对象的定义开始,到继承、多态性、封装等核心概念,再到实战中如何应用这些理念来构建更健壮的应用。我们将通过示例代码,一起见证PHP中OOP的魔力,并理解其背后的设计哲学。