# 抽象类或者接口类,制定规范,统一方法名
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # # 抽象类或者接口类,制定规范,统一方法名 2 from abc import ABCMeta,abstractmethod 3 class Payrole(metaclass=ABCMeta): 4 @abstractmethod 5 def pay(self,money):pass 6 7 8 class QQpay(Payrole): 9 def pay(self,money): 10 print('您已经通过QQ支付了%s元' % money) 11 12 13 class Wechatpay(Payrole): 14 def pay(self,money): 15 print('您已经通过微信支付了%s元' % money) 16 17 class Alipay(Payrole): 18 def pay(self, money): 19 print('您已经通过支付宝支付了%s元' % money) 20 21 def pay(obj,money): 22 obj.pay(money) 23 24 25 qq = QQpay() 26 weixin = Wechatpay() 27 ali = Alipay() 28 pay(qq,700) 29 pay(weixin,600) 30 pay(ali,400) 31 pay(ali,900)
# 将方法转换为属性,修改和删除私有方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # 将方法转换为属性,修改和删除私有方法 2 3 class People: 4 def __init__(self, name, age, sex): 5 self.name = name 6 self.__age = age 7 self.__sex = sex 8 @property 9 def age(self): 10 return self.__age 11 12 @age.setter 13 def age(self,new_age): 14 self.__age = new_age 15 16 @age.deleter 17 def age(self): 18 return 789 19 20 21 a = People('anthony',19,'男') 22 # a.age = 21 23 del a.age 24 print(a.age)
# 反射(实例化对象、类、当前模块、其他模块)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # 对于实例化对象 2 class Foo: 3 f = '类的静态变量' 4 def __init__(self,name,age): 5 self.name=name 6 self.age=age 7 8 def say_hi(self): 9 print('hi,%s'%self.name) 10 11 obj=Foo('egon',73) 12 13 print(hasattr(obj,'name')) # 判断属性是否存在 14 print(getattr(obj,'name')) # 获取属性 15 16 setattr(obj,'oldboy','anthony') # 修改属性 17 print(getattr(obj,'oldboy')) 18 19 print(delattr(obj,'name')) # 删除属性 20 print(getattr(obj,'name'))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # 对于类的示例 2 class Foo(object): 3 staticField = "old boy" 4 5 def __init__(self): 6 self.name = 'wupeiqi' 7 8 def func(self): 9 return 'func' 10 11 @staticmethod 12 def bar(): 13 return 'bar' 14 15 print(getattr(Foo,'staticField')) 16 print(getattr(Foo,'bar'))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # 对于当前模块的示例 2 import sys 3 4 5 def s1(): 6 print( 's1') 7 8 9 def s2(): 10 print( 's2') 11 12 13 this_module = sys.modules[__name__] 14 15 16 print(getattr(this_module,'s1')) 17 print(hasattr(this_module,'s2'))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #一个模块中的代码 2 def test(): 3 print('from the test') 4 """ 5 程序目录: 6 module_test.py 7 index.py 8 9 当前文件: 10 index.py 11 """ 12 # 另一个模块中的代码 13 import module_test as obj 14 15 #obj.test() 16 17 print(hasattr(obj,'test')) 18 19 getattr(obj,'test')()