未提供项目说明

pythonpp的Python项目详细描述


Python++

PyPI DeploymentUnit Tests

一个针对Python的健壮的Java风格的OOP系统,支持静态、封装和继承。在

View on PyPI / 制造商 Kento NishiRonak Badhe

Python++允许Python程序员在Python中使用面向对象的编程原则。在

安装

这个包在PyPI上可用。 可以使用以下命令安装软件包:

pip install pythonpp

使用

导入库

可以使用以下命令导入Python++:

^{pr2}$

类声明

使用@PythonPP修饰符声明Python++类。在

@PythonPPclassMyClass:pass# class code here

命名空间和作用域

namespace内为Python++类声明变量和方法。在

@PythonPPclassMyClass:defnamespace(public,private):pass# methods and variables here

namespace内的代码可以访问以下范围:

ScopeDescription
^{}The public instance scope.
^{}The private instance scope.
^{}The public static scope.
^{}The private static scope.

静态初始化器

使用@staticinit修饰符为Python++类声明静态初始值设定项。 静态初始值设定项不能访问实例变量和方法。 静态初始值设定项不能有输入参数。在

@PythonPPclassMyClass:defnamespace(public,private):@staticinitdefStaticInit():public.static.publicStaticVar="Static variable (public)"private.static.privateStaticVar="Static variable (private)"

或者,如果变量赋值是常量,则可以在裸namespace中声明静态变量。不建议使用裸静态变量声明。在

构造函数

构造函数可以使用@constructor修饰符声明。构造函数可以有输入参数。在

@PythonPPclassMyClass:defnamespace(public,private):@constructordefConstructor(someValue):public.publicInstanceVar="Instance variable (public)"public.userDefinedValue=someValue

方法声明

方法使用@method(scope)修饰符和public和{}作用域在namespace中声明。在

@PythonPPclassMyClass:defnamespace(public,private):@method(public)defpublicMethod():pass# public instance method here@method(private)defprivateMethod():pass# private instance method here@method(public.static)defpublicStaticMethod():pass# public static method here@method(private.static)defprivateStaticMethod():pass# private static method here

特殊方法

使用@special修饰符声明特殊的内置方法。在

@PythonPPclassMyClass:defnamespace(public,private):@specialdef__str__():return"Some string value"

遗传

类可以使用标准的Python类继承来扩展其他类。在

@PythonPPclassParentClass:defnamespace(public,private):@staticinitdefStaticInit():public.static.staticVar="Static variable"@constructordefConstructor(param):print("Parent constructor")public.param=param@PythonPPclassChildClass(ParentClass):# ChildClass extends ParentClassdefnamespace(public,private):@staticinitdefStaticInit():ParentClass.staticinit()# Call parent static initializerpublic.static.staticVar2="Static variable 2"@constructordefConstructor(param):# Call parent constructorParentClass.constructor(param)

快速入门示例

frompythonppimport*@PythonPPclassParentClass:defnamespace(public,private):@staticinitdefStaticInit():public.static.publicStaticVar="Public static variable"private.static.privateStaticVar="Private static variable"@constructordefConstructor(parameter):private.privateVariable=parameter@PythonPPclassChildClass(ParentClass):defnamespace(public,private):@staticinitdefStaticInit():ParentClass.staticinit()@constructordefConstructor(parameter):ParentClass.constructor(parameter)public.publicVariable="Public variable"private.privateVariable="Private variable"@method(public)defgetPrivateVariable():returnprivate.privateVariable@method(public.static)defgetPrivateStaticVar():returnprivate.static.privateStaticVar@specialdef__str__():return"ChildClass object"
print(ChildClass.publicStaticVar)# > Private static variableprint(ChildClass.getPrivateStaticVar())# > Private static variableobj=ChildClass("Parameter value")print(obj)# > ChildClass objectprint(obj.publicVariable)# > Public variableprint(obj.getPrivateVariable())# > Parameter valuetry:obj.privateVariable# results in an errorexceptExceptionase:print(e)# > 'ChildClass' object has no attribute 'privateVariable'

完整的例子

您可以查看Jupyter笔记本的完整示例here

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么会出现这些错误?表达式的非法开始   使用HttpUrlConnection的java测试URL仅适用于前面的www   在大数据集上使用kmeans的java堆外内存   查找Java RandomAccessFile如何以字符形式读取第n个字节   java Android从BroadcastReceiver获取标题和描述   java使用构造函数参数模拟嵌套类并测试方法   正在将Azure Blob项强制转换为Java文件对象   java并行运行testNG套件   java程序在运行时似乎没有进入   贬低Java规则引擎的优点和缺点   文本区域中的java中心文本   java JPA从多个表中选择错误   类Java问题使用类加载器重新加载代码   java如何在Spring非管理类上使用@Value   java(关闭)Gradle导入VS代码失败   java arraylist拆分(“空白”)并计算字数   Android/Java如何在单独的*中调用函数。java文件?   具有基本身份验证的java Apache Camel RSS模块   java为什么程序在出现溢出或下溢时不抛出异常