初始提交,未完全测试
This commit is contained in:
77
proxy/ProxyClass.py
Normal file
77
proxy/ProxyClass.py
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python3.9
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
JFinal ProxyClass - Proxy Class Information
|
||||
"""
|
||||
|
||||
from typing import Dict, Any, Optional, Type
|
||||
|
||||
class ProxyClass:
|
||||
"""Proxy class information holder"""
|
||||
|
||||
def __init__(self, target: Type):
|
||||
"""
|
||||
Initialize proxy class
|
||||
|
||||
Args:
|
||||
target: Target class to be proxied
|
||||
"""
|
||||
self._target = target
|
||||
self._pkg = target.__module__
|
||||
self._name = target.__name__ + "$$EnhancerByJFinal"
|
||||
self._source_code: Optional[str] = None
|
||||
self._byte_code: Optional[Dict[str, bytes]] = None
|
||||
self._clazz: Optional[Type] = None
|
||||
|
||||
@property
|
||||
def target(self) -> Type:
|
||||
"""Get target class"""
|
||||
return self._target
|
||||
|
||||
@property
|
||||
def pkg(self) -> str:
|
||||
"""Get package name"""
|
||||
return self._pkg
|
||||
|
||||
@property
|
||||
def name(self) -> str:
|
||||
"""Get proxy class name"""
|
||||
return self._name
|
||||
|
||||
@property
|
||||
def source_code(self) -> Optional[str]:
|
||||
"""Get source code"""
|
||||
return self._source_code
|
||||
|
||||
@source_code.setter
|
||||
def source_code(self, value: str):
|
||||
"""Set source code"""
|
||||
self._source_code = value
|
||||
|
||||
@property
|
||||
def byte_code(self) -> Optional[Dict[str, bytes]]:
|
||||
"""Get byte code"""
|
||||
return self._byte_code
|
||||
|
||||
@byte_code.setter
|
||||
def byte_code(self, value: Dict[str, bytes]):
|
||||
"""Set byte code"""
|
||||
self._byte_code = value
|
||||
|
||||
@property
|
||||
def clazz(self) -> Optional[Type]:
|
||||
"""Get loaded class"""
|
||||
return self._clazz
|
||||
|
||||
@clazz.setter
|
||||
def clazz(self, value: Type):
|
||||
"""Set loaded class"""
|
||||
self._clazz = value
|
||||
|
||||
@property
|
||||
def full_name(self) -> str:
|
||||
"""Get full class name with package"""
|
||||
return f"{self._pkg}.{self._name}"
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"ProxyClass(target={self._target.__name__}, name={self._name})"
|
||||
Reference in New Issue
Block a user