一文讲全了Python 类和对象内容

2023-02-19 0 1,082

​​【下期推荐】你若想在北京人民广播电台抢到直降商品的关键性更为重要是手速,还有它:小规模超长传输速率现场直播,点选就看宏碁云音频的庞克应用软件系统。

一文讲全了Python 类和对象内容
全文:这是两个关于 Python 类和第一类的文章内容。

责任编辑撷取自宏碁云街道社区《从头开始学python | Python 类和第一类—面向第一类程式设计》,书名译者:Yuchuan

Python 在活耀开发者方面将超过其他词汇之后,Python 开发者的需求只会增长。 Python 遵从面向第一类的程式设计本体论。它处理新闻稿 python 类,从它建立第一类并与使用者可视化。在面向第一类的词汇中,流程被分为独立的第一类,或者你能认作几个小流程。每一第一类代表者应用流程的完全相同部分,它能互相通讯。

在这个python类网志中,您将按以下次序了解类和第一类的方方面面:

What is a Python Class?Methods and Attributes in a classWhat are Objects?OOPs Concepts:InheritancePolymorphismAbstraction

什么是 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 [email protected] emp_1.pay=10000 emp_2.first=test emp_2.last=abc [email protected] emp_2.pay=10000 print(emp_1.email) print(emp_2.email)

输出–

现在,如果他们不想手动设置这些表达式咋办。你会看到很多代码,而且很容易出错。所以为了让它自动,他们能采用“init”形式。为此,让他们了解一下 Python 类中的形式和特性到底是什么。

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())

输出–

[email protected] [email protected] 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 类中的各种特性。

Python 类中的特性

Python 中的特性表述了第一类、元素或文件的特性。有两种类型的特性:

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

打印(emp_1.__dict__)

执行之后,你会得到这样的输出:{fname: aayushi, lname: johari, sal: 350000, email: [email protected]}

使用者表述的特性:特性是在类表述中建立的。他们能为类的现有示例动态建立新特性。特性也能绑定到类名。

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

一文讲全了Python 类和对象内容

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

一文讲全了Python 类和对象内容

正如他们上面讨论的,两个第一类能用来出访完全相同的特性。它用于建立类的示例。示例是在运行时建立的类的第一类。

给你两个快速浏览,第一类主要是看到周围的一切。例如:狗是动物类的第一类,我是人类类的第一类。同样,同两个电话类能有完全相同的第一类。 这与他们已经讨论过的表达式调用非常相似。让他们通过两个例子来理解这一点:

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

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

面向第一类的概念

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

面向第一类程式设计包括Python类、第一类、继承、多态、抽象等概念,下面让他们详细了解这些主题。

Python 类:继承

继承容许他们从基类/父类继承特性和形式。这很有用,因为我

一文讲全了Python 类和对象内容

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

1. 父类(Super 或 Base 类)

2.子类(子类或派生类)

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

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

一文讲全了Python 类和对象内容

让他们继续采用 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)

输出- [email protected]

正如您在上面的输出中看到的,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)

输出- 1.1

如您所见,它已将工资增长百分比从 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) 它继承了基类的特性。 总之,继承用于宠信代码并降低流程的复杂性。

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

接下来,让他们转向另两个面向第一类的程式设计概念,即抽象。

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 不会不容许你建立抽象类的第一类。但是采用继承,您实际上能继承特性并执行相应的任务。

点选关注,第一时间了解宏碁云新鲜技术~

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务