前言:
眼前朋友们对“php获取父类”都比较注重,你们都需要学习一些“php获取父类”的相关文章。那么小编也在网摘上收集了一些对于“php获取父类””的相关内容,希望你们能喜欢,同学们一起来学习一下吧!引言
某些场景下需要编写一个子类继承 Python 模块中提供的父类,来完成开发任务。例如 torch.nn.Mudule 、torch.utils.data.Dataset ,transformer 程序开发框架要求继承这两个类,由底层框架反向控制,在内部执行约定的接口。
之前的 phpy 版本中 PHP 代码层面无法将 Python 类作为基类。必须要使用 Python 代码编写一个调用外壳才可以实现,社区也有开发者提供了一个动态创建类的解决方案:
动态创建类
Python 基类
import abcclass Animal(abc.ABC): def __init__(self, name, age): self.name = name self.age = age def speak(self, name): print("Animal speak, Age: ", self.age) pass def get_age(self): return self.age继承实现方式安装 composer 包此功能除了安装 phpy 扩展外,还需要额外安装 phpy 的 composer 扩展包。
composer require swoole/phpy
调用方法
$this->self()->get_age();$this->get_age();• PHP 类和 Python 父类有同名方法,可以使用 $this->self()->{$method}() 调用 Python 方法• 在 PHP 类中未定义的方法,可以直接使用 $this->{$method}() 调用,等同于 $this->self()->{$method}()
调用父类方法
当子类和父类有同名方法时,可以使用 $this->super()->{$method}() 方法调用父类的方法。
$this->super()->speak('dog');
多重继承
运行项目
在项目根目录下,通过以下命令运行PHP文件以启动模型训练和测试:
php vit.php
你还可以运行 dataset.php 来查看MNIST数据集的加载情况:
php dataset.php
训练模型
训练过程中,模型参数会自动保存在model.pth文件中。下次运行时,程序会尝试从该文件加载模型参数。
php train.php
训练过程中,程序会输出每 1000 次迭代的损失值,并在每次保存模型参数时给出提示。
epoch:0 iter:0,loss:2.303epoch:0 iter:1000,loss:0.278...结语
基于 phpy 语言级别调用 Python 生态的能力,使得 PHP 语言也可以在人工智能、科学计数、数据处理等领域发挥作用,而不需要使用其他语言。继承 Python 类的特性进一步加强了 phpy 的能力,使用纯 PHP 就可以实现绝大部分编程场景。
原文链接
标签: #php获取父类