龙空技术网

phpy 1.0.8 已发布,现在 PHP 类可以继承 Python 类了

无忧的松鼠u1 710

前言:

眼前朋友们对“php获取父类”都比较注重,你们都需要学习一些“php获取父类”的相关文章。那么小编也在网摘上收集了一些对于“php获取父类””的相关内容,希望你们能喜欢,同学们一起来学习一下吧!

引言

某些场景下需要编写一个子类继承 Python 模块中提供的父类,来完成开发任务。例如 torch.nn.Muduletorch.utils.data.Datasettransformer 程序开发框架要求继承这两个类,由底层框架反向控制,在内部执行约定的接口。

之前的 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获取父类