iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解Python类和对象内容
  • 235
分享到

详解Python类和对象内容

PythonPython对象 2022-06-02 22:06:04 235人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、什么是python类?二、Python类中的方法和属性2.1、Python类中的方法2.2、Python类中的属性三、面向对象的概念3.1、Python类:继承3.2、Python类:多态性3.3、Pytho

目录
  • 一、什么是python类?
  • 二、Python类中的方法和属性
    • 2.1、Python类中的方法
    • 2.2、Python类中的属性
  • 三、面向对象的概念
    • 3.1、Python类:继承
    • 3.2、Python类:多态性
    • 3.3、Python类:抽象

一、什么是Python类?

python中的类是创建特定对象的蓝图。它使您可以以特定方式构建软件。问题来了,怎么办?类允许我们以一种易于重用的方式对我们的数据和函数进行逻辑分组,并在需要时进行构建。考虑下图。

在第一张图片(A)中,它代表了一个可以被视为Class的房子的蓝图。使用相同的蓝图,我们可以创建多个房屋,这些可以视为Objects。使用类,您可以为您的程序添加一致性,以便以更简洁、更有效的方式使用它们。属性是通过点表示法访问的数据成员(类变量和实例变量)和方法。

  • 类变量是一个类的所有不同对象/实例共享的变量。
  • 实例变量是每个实例唯一的变量。它是在方法内部定义的,并且只属于类的当前实例。
  • 方法也称为函数,它们在类中定义并描述对象的行为。

现在,让我们继续前进,看看它在PyCharm中是如何工作的。要开始,首先看一下python类的语法。

语法:


class Class_name:
statement-1
.
.
statement-N

在这里,“class”语句创建了一个新的类定义。类的名称紧跟在python中的关键字“class”之后,后跟一个冒号。要在python中创建一个类,请考虑以下示例:


class employee:
 pass
 #no attributes and methods
 emp_1=employee()
 emp_2=employee()
 #instance variable can be created manually
 emp_1.first='aayushi'
 emp_1.last='Johari'
 emp_1.email='aayushi@edureka.co'
 emp_1.pay=10000
 
emp_2.first='test'
 emp_2.last='abc'
 emp_2.email='test@company.com'
 emp_2.pay=10000
 print(emp_1.email)
 print(emp_2.email)

输出?

aayushi@edureka.co

test@company.com

现在,如果我们不想手动设置这些变量怎么办。你会看到很多代码,而且很容易出错。所以为了让它自动,我们可以使用“init”方法。为此,让我们了解一下Python类中的方法和属性到底是什么。

二、Python类中的方法和属性

2.1、Python类中的方法

如果没有一些功能,现在创建一个类是不完整的。因此,可以通过设置各种属性来定义功能,这些属性充当与这些属性相关的数据和功能的容器。python中的函数也称为方法。谈到init方法,它是一个特殊的函数,每当实例化该类的新对象时都会调用它。您可以将其视为initialize方法,或者如果您来自任何其他面向对象的编程背景,例如c++、Java等,则可以将其视为构造函数。现在当我们在类中设置方法时,它们会自动接收实例。让我们继续使用python类并使用此方法接受名字、姓氏和薪水。


class employee:
    def __init__(self, first, last, sal):
        self.fname=first
        self.lname=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
 
emp_1=employee('aayushi','johari',350000)
emp_2=employee('test','test',100000)
print(emp_1.email)
print(emp_2.email)

现在在我们的“init”方法中,我们设置了这些实例变量(self、first、last、sal)。Self是实例,这意味着每当我们写self.fname=first时,它与emp_1.first='aayushi'相同。然后我们创建了员工类的实例,我们可以在其中传递init方法中指定的值。此方法将实例作为参数。现在它将自动完成,而不是手动完成。

接下来,我们希望能够执行某种操作。为此,我们将向此类添加一个方法。假设我想要显示员工全名的功能。因此,让我们实际实现这一点。


class employee:
    def __init__(self, first, last, sal):
        self.fname=first
        self.lname=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
 
    def fullname(self):
            return '{}{}'.fORMat(self.fname,self.lname)
 
emp_1=employee('aayushi','johari',350000)
emp_2=employee('test','test',100000)
print(emp_1.email)
print(emp_2.email)
print(emp_1.fullname())
print(emp_2.fullname())

输出?

aayushi.johari@company.com 

 test.test@company.com 

 aayushijohari 

 TESTTEST

正如你在上面看到的,我在一个类中创建了一个名为“全名”的方法。因此,python类中的每个方法都会自动将实例作为第一个参数。现在在这个方法中,我编写了打印全名并返回这个而不是emp_1名字和姓氏的逻辑。接下来,我使用了“self”,以便它适用于所有实例。因此每次都打印这个,我们使用一个方法。

继续使用Python类,有一些变量在类的所有实例之间共享。这些被称为类变量。实例变量对于每个实例都可以是唯一的,例如姓名、电子邮件、sal等。复杂吗?让我们通过一个例子来理解这一点。请参阅下面的代码以了解工资的年度增长情况。


class employee:
    perc_raise =1.05
    def __init__(self, first, last, sal):
        self.fname=first
        self.lname=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
 
    def fullname(self):
            return '{}{}'.format(self.fname,self.lname)
    def apply_raise(self):
        self.sal=int(self.sal*1.05)
 
emp_1=employee('aayushi','johari',350000)
emp_2=employee('test','test',100000)
 
print(emp_1.sal)
emp_1.apply_raise()
print(emp_1.sal)

输出?

350000

 367500

正如你在上面看到的,我先打印了工资,然后应用了1.5%的增长。为了访问这些类变量,我们需要通过类或类的实例来访问它们。现在,让我们了解Python类中的各种属性。

2.2、Python类中的属性

Python中的属性定义了对象、元素或文件的属性。有两种类型的属性:

内置类属性:Python类中存在各种内置属性。例如_dict_、_doc_、_name _等。让我举同样的例子,我想查看employee1的所有键值对。为此,您可以简单地编写以下包含类命名空间的语句:

打印

(emp_1.__dict__)

执行之后,你会得到这样的输出:

{'fname': 'aayushi', 'lname': 'johari', 'sal': 350000, 'email': 'aayushi.johari@company.com'}

用户定义的属性:属性是在类定义中创建的。我们可以为类的现有实例动态创建新属性。属性也可以绑定到类名。

接下来,我们有public、protected和private属性。让我们详细了解它们:

接下来,让我们了解一个python类中最重要的组件,即Objects。

正如我们上面讨论的,一个对象可以用来访问不同的属性。它用于创建类的实例。实例是在运行时创建的类的对象。

给你一个快速浏览,对象主要是看到周围的一切。例如:狗是动物类的对象,我是人类类的对象。同样,同一个电话类可以有不同的对象。这与我们已经讨论过的函数调用非常相似。让我们通过一个例子来理解这一点:


class MyClass:
 
   def func(self):
      print('Hello')
 
# create a new MyClass
ob = MyClass()
ob.func()

继续使用python类,让我们了解各种OOP概念。

三、面向对象的概念

OOPs指的是Python中的面向对象编程。好吧,Python并不是完全面向对象的,因为它包含一些过程函数。现在,您一定想知道过程编程和面向对象编程之间有什么区别。为了消除您的疑问,在过程式编程中,整个代码都被写入一个长过程,即使它可能包含函数和子例程。由于数据和逻辑混合在一起,因此无法管理。但是当我们谈论面向对象编程时,程序被拆分为独立的对象或几个小程序。每个对象代表应用程序的不同部分,这些部分有自己的数据和逻辑来在它们之间进行通信。例如,一个网站有不同的对象,如图像、视频等。

面向对象编程包括Python类、对象、继承、多态、抽象等概念,下面让我们详细了解这些主题。

3.1、Python类:继承

继承允许我们从基类/父类继承属性和方法。这很有用,因为我们可以创建子类并从父类中获取所有功能。然后我们可以在不影响父类的情况下覆盖和添加新功能。让我们通过一个例子来理解父类和子类的概念。

正如我们在图像中看到的,孩子继承了父亲的属性。同样,在python中,有两个类:

父类(Super或Base类)

子类(子类或派生类)

继承属性的类称为子类,而继承属性的类称为父类。

继承是指创建包含其父类的专业化的子类的能力。它进一步分为四种类型,即单继承、多级继承、分层继承和多重继承。请参考下图以获得更好的理解。

让我们继续使用python类并了解继承是如何有用的。

比如说,我想为员工类型创建类。我将创建'developers'和'managers'作为子类,因为开发人员和经理都有姓名、电子邮件和薪水,所有这些功能都在员工类中。因此,我们不必复制子类的代码,而是可以通过从员工那里继承来简单地重用代码。


class employee:
    num_employee=0
    raise_amount=1.04
    def __init__(self, first, last, sal):
        self.first=first
        self.last=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
        employee.num_employee+=1
    def fullname (self):
        return '{} {}'.format(self.first, self.last)
    def apply_raise (self):
        self.sal=int(self.sal * raise_amount)
class developer(employee):
    pass
 
emp_1=developer('aayushi', 'johari', 1000000)
print(emp_1.email)

输出-

aayushi.johari@company.com

正如您在上面的输出中看到的,employee类的所有详细信息都可以在developer类中找到。现在,如果我想将开发人员的raise_amount更改为10%怎么办?让我们看看它是如何实际完成的。


class employee:
    num_employee=0
    raise_amount=1.04
    def __init__(self, first, last, sal):
        self.first=first
        self.last=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
        employee.num_employee+=1
    def fullname (self):
        return '{} {}'.format(self.first, self.last)
    def apply_raise (self):
        self.sal=int(self.sal* raise_amount)
 
class developer(employee):
    raise_amount = 1.10
 
emp_1=developer('aayushi', 'johari', 1000000)
print(emp_1.raise_amount)

如您所见,它已将工资增长百分比从4%更新为10%。现在,如果我想再添加一个属性,比如在我们的init方法中使用一种编程语言,但它在我们的父类中不存在。有什么解决办法吗?是的!我们可以复制整个员工逻辑并这样做,但它会再次增加代码大小。因此,为了避免这种情况,让我们考虑以下代码:


class employee:
    num_employee=0
    raise_amount=1.04
    def __init__(self, first, last, sal):
        self.first=first
        self.last=last
        self.sal=sal
        self.email=first + '.' + last + '@company.com'
        employee.num_employee+=1
    def fullname (self):
        return '{} {}'.format(self.first, self.last)
    def apply_raise (self):
        self.sal=int(self.sal* raise_amount)
class developer(employee):
    raise_amount = 1.10
    def __init__(self, first, last, sal, prog_lang):
        super().__init__(first, last, sal)
        self.prog_lang=prog_lang
 
emp_1=developer('aayushi', 'johari', 1000000, 'python')
print(emp_1.prog_lang)

因此,只用一点点代码,我就进行了更改。我使用了super.__init__(first, last, pay)它继承了基类的属性。总之,继承用于重用代码并降低程序的复杂性。

3.2、Python类:多态性

计算机科学中的多态性是为不同的底层形式呈现相同界面的能力。实际上,多态意味着如果类B从类A继承,它不必继承关于类A的所有内容,它可以做一些与类A不同的事情。它最常用于处理继承。Python是隐式多态的,它能够重载标准运算符,以便它们根据上下文具有适当的行为。

让我们通过一个例子来理解:


class Animal:
    def __init__(self,name):
        self.name=name
        def talk(self):
            pass
class Dog(Animal):
            def talk(self):
                print('Woof')
class Cat(Animal):
    def talk(self):
        print('MEOW!')
c= Cat('kitty')
c.talk()
d=Dog(Animal)
d.talk()

输出-

Meow!Woof

接下来,让我们转向另一个面向对象的编程概念,即抽象。

3.3、Python类:抽象

抽象用于通过建模适合问题的类来简化复杂的现实。在这里,我们有一个无法实例化的抽象类。这意味着您不能为这些类创建对象或实例。它只能用于继承您称为基类的某些功能。因此,您可以继承功能,但同时,您无法创建此特定类的实例。让我们通过下面的例子来理解抽象类的概念:


from abc import ABC, abstractmethod     
 
class Employee(ABC):
    @abstractmethod
 
    def calculate_salary(self,sal):
        pass
 
class Developer(Employee):
 
    def calculate_salary(self,sal):
        finalsalary= sal*1.10
        return  finalsalary
 
emp_1 = Developer()
print(emp_1.calculate_salary(10000))

输出?

11000.0

正如你在上面的输出中看到的,我们已经将基本工资增加到10%,即现在的工资是11000。现在,如果你真的继续创建一个“Employee”类的对象,它会抛出一个错误,因为python不会'不允许你创建抽象类的对象。但是使用继承,您实际上可以继承属性并执行相应的任务。

以上就是详解Python类和对象内容的详细内容,更多关于Python类和对象的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解Python类和对象内容

本文链接: https://www.lsjlt.com/news/10993.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Python类和对象内容
    目录一、什么是Python类?二、Python类中的方法和属性2.1、Python类中的方法2.2、Python类中的属性三、面向对象的概念3.1、Python类:继承3.2、Python类:多态性3.3、Pytho...
    99+
    2022-06-02
    Python Python 对象
  • 【Java】类和对象详解
    文章目录 一、面向对象1.1 什么是面向对象1.2 面向对象与面向过程 二、类的定义和实例化2.1 类的定义2.2 类的创建2.3 类的实例化2.4 类和对象的联系 三、认识 this...
    99+
    2023-10-18
    java 开发语言
  • python基础之定义类和对象详解
    定义简单的类 面向对象是更大的封装,在一个类中封装多个方法,这样通过这个类创建出来的对象,就可以直接调用这些方法了! 定义只包含方法的类 在python中,要定义一个只包含方法的类,...
    99+
    2022-11-13
  • Java面向对象之内部类详解
    目录前言内部类概述内部类的分类成员内部类局部内部类前言 在 Java 中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。本篇博客将总结内部类的使用。 内部类概述...
    99+
    2022-11-13
  • Python 类和对象详细介绍
    目录对象 = 属性 + 方法self是什么公有和私有继承调用未绑定的父类方法使用super函数多重继承组合构造和析构_ _init_ _(self[, …])构造方法_...
    99+
    2022-11-11
  • Java面向对象类和对象实例详解
    目录1 - Java面向对象学习的三条主线2 - 面向过程与面向对象3 - 面向对象的三大特征4 - 面向对象分析方法分析问题的思路和步骤5 - 面向对象的思想概述6 - 类和对象的...
    99+
    2022-11-13
  • Python中的类对象示例详解
    抽象特点 Python 一切皆对象,基于此概念,对 类 class 有以下特点: 类与实例的属性 类对象创建可选择定义类属性,创建实例对象时,实例属性自动执行类的__init__方...
    99+
    2022-11-12
  • C++类和对象基础详解
    目录一、类和对象的基本概念结构化程序设计面向对象的程序设计使用类的成员变量和成员函数二、类和对象基础 类成员的可访问范围构造函数(constructor)基本概念拷贝(复制)构造函数...
    99+
    2022-11-12
  • 详解C++之类和对象(2)
    目录一.构造函数1.构造函数的定义:2.构造函数的特征:3.构造函数的实现:3.1.系统默认的构造函数3.2无参构造3.3 带参构造二 析构函数1.析构函数的定义2.析构函数的特征三...
    99+
    2022-11-12
  • 详解C++之类和对象(1)
    目录C语言和C++的一大区别struct和class的区别总结c++类的由来(或者说为什么要增加类):我们知道c语言是面向过程的语言,c++是即面向过程又是面向过程的语言。那么这两个...
    99+
    2022-11-12
  • JavaScript对象内置对象,值类型和引用类型讲解
    目录对象对象的定义遍历对象的成员JS内置对象Math对象Date对象数组对象String对象值类型和引用类型对象 JS中的对象是属性和行为的结合体,其中属性是对象的静态特征,行为又称...
    99+
    2022-11-12
  • C++之string类对象的容量操作详解
    目录前言1. size返回字符串的有效长度2. length 返回字符串的有效长度3. capacity 返回总空间的大小4. empty 检测是否为空串5. clear 清空有效字...
    99+
    2022-11-12
  • python对象和类
    #coding:utf-8 #1、对象是一个有着相应行为的数据的集合 #2、在面向对象建模中,用于各种描述对象的属于叫做类 #3、类和对象的区别:类描述了对象,是创建对象的模板 #4、关联是把两个类联系起来最基本的方式 #5、一个类可以通...
    99+
    2023-01-31
    对象 python
  • python 类和对象
    一.编程范式1.面向对象编程;2.面向过程编程;3.函数式编程二.面向对象设计面向对象设计:将一类具体事物的数据和动作整个到一起;1.我们都学过函数,那么使用函数该怎么实现面向对象设计呢?如下图所示:代码部分:#面向对象设计:就是将同一类具...
    99+
    2023-01-31
    对象 python
  • C++类和对象之多态详解
    目录多态基本概念和原理剖析多态案例1 计算器类纯虚函数和抽象类多态案例2 制作饮品虚析构和纯虚析构多态案例3 电脑组装多态基本概念和原理剖析 多态:多态是C++面向对象的三大特性之一...
    99+
    2022-11-12
  • C++类和对象之封装详解
    目录封装的意义以及示例访问权限公共权限 public保护权限 protected私有权限 privatestruct 和 class的区别成员属性私有化案例1:设计立方体类案例2:点...
    99+
    2022-11-12
  • python面相对象之类和对象
      类和对象是python面相对象中两个重要的概念,类是客观世界中事物的抽象,而对象是类实例后的变量,比如汽车模型可以造出各种各样的汽车,汽车模型就是类,汽车就是汽车模型抽象出来的实例,这里有必要还有说一下方法,函数在类中叫方法,比如汽车...
    99+
    2023-01-31
    对象 面相 python
  • Python面向对象之类和对象
    目录类定义类定义类和属性类中方法对象方法(普通方法)类方法静态方法魔术方法对象创建对象对象属性总结 类 定义类 所有类名首字母要求大写,多个单词时遵循驼峰命名法 所...
    99+
    2022-11-12
  • python面向对象之类的继承详解
    目录一、概述 二、类的继承2.1 继承的定义2.2 构造函数的继承 2.3 子类对父类方法的重写三、类继承的事例一、概述  面向对象编程 (OOP) 语言的一个主要功能就是“继承”。...
    99+
    2022-11-12
  • 详解Java内部类与对象的打印概念和流程
    目录一、内部类的概念二、内部类的分类三、成员内部类1、普通内部类2、静态内部类四、局部内部类五、对象的打印一、内部类的概念 在 Java 中,可以将一个类定义在另一个类或者一个方法的...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作