Perl 教程 之 Perl 面向对象 3

简介: Perl的面向对象编程涉及两种实现:匿名哈希表引用和数组引用。对象是类(Perl包)中数据项的引用,方法是接收类名或对象作首参的子程序。

Perl 教程 之 Perl 面向对象 3

Perl 面向对象

Perl 中有两种不同地面向对象编程的实现:

一是基于匿名哈希表的方式,每个对象实例的实质就是一个指向匿名哈希表的引用。在这个匿名哈希表中,存储了所有的实例属性。

二是基于数组的方式,在定义一个类的时候,我们将为每一个实例属性创建一个数组,而每一个对象实例的实质就是一个指向这些数组中某一行索引的引用。在这些数组中,存储着所有的实例属性。

面向对象基础概念

面向对象有很多基础概念,这里我们接收三个:对象、类和方法。

对象:对象是对类中数据项的引用。.

类:类是个Perl包,其中含提供对象方法的类。

方法:方法是个Perl子程序,类名是其第一个参数。

Perl 提供了 bless() 函数,bless 是用来构造对象的, 通过 bless 把一个引用和这个类名相关联,返回这个引用就构造出一个对象。

创建和使用对象

创建一个类的实例 (对象) 我们需要定义一个构造函数,大多数程序使用类名作为构造函数,Perl 中可以使用任何名字。

你可以使用多种 Perl 的变量作为 Perl 的对象。大多数情况下我们会使用引用数组或哈希。

接下来我们为 Person 类创建一个构造函数,使用了 Perl 的哈希引用。

在创建对象时,你需要提供一个构造函数,它是一个子程序,返回对象的引用。

实例如下:

实例
package Person;
sub new
{
my $class = shift;
my $self = {
_firstName => shift,
_lastName => shift,
_ssn => shift,
};

# 输出用户信息
print "名字:$self->{_firstName}\n";
print "姓氏:$self->{_lastName}\n";
print "编号:$self->{_ssn}\n";
bless $self, $class;
return $self;

}
接下来我们创建一个对象:

$object = new Person( "小明", "王", 23234345);

目录
相关文章
|
8月前
|
存储 缓存 自然语言处理
初识华为RazorAttention
RazorAttention是一种静态KV Cache压缩算法,旨在解决长上下文大型语言模型(LLM)中KV缓存占用显存过大的问题。通过基于注意力头的有效视野动态调整KV Cache大小,RazorAttention能够压缩70%的KV Cache,同时保持模型长序列能力几乎无损。该方法保护检索头(包括Echo Head和Induction Head)的KV Cache,确保重要信息不丢失,并对非检索头进行压缩优化。相比在线动态压缩方法,RazorAttention无需实时计算,兼容FlashAttention,显著降低存储与计算开销,为模型部署提供高效解决方案。
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
3449 1
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
Linux
Linux经常使用命令汇总和总结
Linux经常使用命令汇总和总结
134 1
|
安全 C++ 容器
C++ 11新特性之语法甜点3
C++ 11新特性之语法甜点3
98 0
|
传感器 存储 数据采集
振南技术干货集:比萨斜塔要倒了,倾斜传感器快来!(5)
振南技术干货集:比萨斜塔要倒了,倾斜传感器快来!(5)
|
Python
pandas使用HYPERLINK追加写入超链接-url、文件、图片
pandas使用HYPERLINK追加写入超链接-url、文件、图片 使用HYPERLINK即可达到目的,可以写url、文件、图片、各种你自己能访问的路径 注意:HYPERLINK里面的字符长度不能超过255,否则无法写入超链接
713 0
pandas使用HYPERLINK追加写入超链接-url、文件、图片
|
传感器 机器学习/深度学习 算法
【组合导航】GNSS与惯性及多传感器组合导航附matlab代码
【组合导航】GNSS与惯性及多传感器组合导航附matlab代码
|
设计模式 安全 Java
01.创建型:单例设计模式1
单例设计模式
253 1
|
SQL 消息中间件 存储
使用 CSP进行欺诈检测
构建实时流分析数据管道需要能够处理流中的数据。流内处理的一个关键先决条件是能够收集和移动在源点生成的数据。这就是我们所说的第一英里问题。本博客将分两部分发布。在第一部分中,我们将研究由 Apache NiFi 提供支持的Cloudera DataFlow如何通过轻松高效地获取、转换和移动数据来解决第一英里问题,以便我们可以轻松实现流分析用例。我们还将简要讨论在 Cloudera DataFlow 的云原生 Kubernetes 部署中运行此流程的优势。
使用 CSP进行欺诈检测
算法刷题第二天(跑路人笔记)<双指针>
算法刷题第二天(跑路人笔记)<双指针>
算法刷题第二天(跑路人笔记)<双指针>