未提供项目说明
pythonpp的Python项目详细描述
Python++
一个针对Python的健壮的Java风格的OOP系统,支持静态、封装和继承。在
View on PyPI / 制造商 Kento Nishi 和 Ronak 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
内的代码可以访问以下范围:
Scope | Description |
---|---|
^{ | 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。
- 项目
标签: