反射 单例模式
反射&函數vs方法
反射(通過字符串去操作一個對象)
## 反射類中屬性和方法 class A:name = 'laozi'def func(self):print(self.func)print(hasattr(A(),'func'), getattr(A(),'func')) hasattr(A(),'func') getattr(A,'func') obj = A() setattr(obj,'age',19) print(getattr(obj,'age')) 反射多應用于用戶輸入導航條 ## 反射當前模塊的函數class Auth:def login(self):print('登錄函數')def register(self):print('注冊函數')def exit(self):print('退出...')obj = Auth() s = 'login' getattr(obj,s)()java的反射
分辨函數和方法(區別在于隱式傳參和顯示傳參)
from types import FunctionType from types import MethodTypedef func():pass class A:def func1(self):pass a = A() print() print(isinstance(func,FunctionType)) ## Trueprint(isinstance(A.func1,FunctionType)) # True print(isinstance(a.func1,FunctionType)) # false 傳參的區別雙下方法
__new__ 構造方法 創造并返回一個新對象 __init__ 空間賦值單例模式
class A:__status = Nonedef __new__(cls, *args, **kwargs):if not cls.__status:cls.__status = object.__new__(cls)return cls.__statusa = A() a1 = A() print(a) print(a1)轉載于:https://www.cnblogs.com/albert0823/p/11180870.html
總結
- 上一篇: 使用@Transactional应注意的
- 下一篇: Windows下删除.svn文件夹的最简