首页 > 编程语言 >python面向对象

python面向对象

时间:2023-02-18 14:32:02浏览次数:38  
标签:__ name python self 面向对象 实例 对象 变量

1、面向对象和面向过程的区别

1.1、面向过程:是一种以事件为中心的编程思想,更关注过程。简单的问题可以用面向过程的思路来解决,直接有效,但是当问题的规模变得更大时,用面向过程的思想是远远不够的。

优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素

缺点:不易维护、复用和拓展

1.2、面向对象:世界上的每个人或事务都能看成一个对象,每个对象都有自己的属性和行为,对象与对象之间通过方法来交互。面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为

优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护

缺点:性能比面向过程低

2、面向对象的一些概念

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 方法:类中定义的函数。
  • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
class Animal(object):
age = 0

def __init__(self, name=None):
self.name = name
Animal.age = 10

def get_name(self):
print("我的名字:{}", self.name)

def test_self(self):
print(self)
print(self.__class__)


if __name__ == '__main__':
Animal().test_self()
  • age:类变量
  • __init__:类的初始化方法,在类创建的时候就会调用该方法
  • self:self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数

python面向对象_类变量

从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.__class__ 则指向类

class Animal(object):
age = 0

def __init__(self, name=None):
self.name = name
Animal.age = 10

def get_name(self):
print("我的名字:{}".format(self.name))

def test_self(self):
print(self)
print(self.__class__)


if __name__ == '__main__':
dog = Animal(name="狗")
dog.get_name()

python面向对象_类变量_02

标签:__,name,python,self,面向对象,实例,对象,变量
From: https://blog.51cto.com/u_15694134/6065421

相关文章

  • Python配置文件管理之ini和yaml文件读取
    1.引言当我们设计软件时,我们通常会花费大量精力来编写高质量的代码。但这往往还不够,一个好的软件还应该考虑其整个系统,如测试、部署、网络等。其中最重要的一个方面是配置......
  • python定时器
    一.TimerTimer为threading中的一个类,用来指定的秒数后调用函数,我们来看下Timer类的构造参数。interval:设置定时运行的时间function:设置定时的事件args:参数kwargs:字典......
  • 【编程基础之Python】5、安装Python第三方模块
    (【编程基础之Python】5、安装Python第三方模块)安装Python第三方模块为什么需要安装第三方模块Python具有很强的可扩展性,它不是把所有功能特性都集中到语言核心,而是提供......
  • 大文件读取的实现-PYTHON
    当前一个大文件大小,比当前的机器的内存大,先读取某个文件里的一部分。文件遍历因为文件保存了很多字符和行,因此也是循环常见的典型使用案例,最原始的方法可以调用文件对象的re......
  • python--石头剪刀布游戏(列表)
    一、学习目标利用列表实现石头剪刀布游戏二、实验环境Pycharm社区版、win11三、代码及运行结果先贴代码,有需要的直接拿,想要进一步一起学习的,接着往下看第四个标题呀,亲。起初......
  • python学习笔记七:DataFrame
    1.Series是ndarray的升级,而DataFrame是Series的升级,从一维拓展到多维DataFrame的属性:index,colums,values,shapeimportnumpyasnpimportpandasaspdfrompandasimport......
  • python学习笔记六:Series
    Series是一种类似于一维数组的对象,由以下两部分组成:values:一组数据(ndarray或list类型)index:相关的数据索引标签一维数组默认索引为0,1,2,3...,而Series的索引可以自己给定......
  • python学习笔记五:numpy
    ndarray是一个多维数组的数据结构1.彩色图像是一个三维数组,通过matplotlib显示图像#显示图像importnumpyasnpimportmatplotlib.pyplotaspltfish=plt.imread('HappyF......
  • python学习笔记四:字典
    字典和集合一样是无序的,不能通过索引来存取,只能通过键来存取。字典的键必须是不可变的数据类型,如数字,字符串,元组等,列表等可变对象不能作为键。不允许同一个键出现两次,创建......
  • python学习笔记三:元组和集合
    学习python的小伙伴们经常会有这样一个疑问,既然有列表里,问什么还要有元组呢。因为列表是可变的,而元组是不可变的。比如我们经常需要传入函数的数据是不变的,这时就要用到元组......