反射,类,封装

# inp = input("请输入模块:")#字符串形式导入模块
# r = __import__(inp)
# r = __import__(lib.comm.s1,fromlist=True)
# inp1 = input("请输入函数:")#字符串形式寻找函数
# target = getattr(r,inp1)#target目标,func功能
# print(target())
#反射,根据字符串的形式去某个模块寻找东西
import comm
# print(hasattr(comm,"NAME"))#判断是否有全局变量NAME
# setattr(comm,"AGE",18)#在内存里加全局变量AGE
#
# delattr(comm,"NAME")#在内存里删除
# url = input("请输入url:")
# inp = url.split("/")[-1]
# if hasattr(comm,inp):
# target_func = getattr(comm,inp)
# r = target_func()
# else:
# print("404")
#面向对象,封装
class Tom:
def __init__(self,bk):#方法中执行具体的封装操作,称为初始化
"""
构造方法
:param bk:
"""
self.backend = bk
def __del__(self):#解释器销毁对象时自动调用:析构方法
pass
def h1(self):
print(self.backend)
def h2(self):
pass
# obj = Tom()
# obj.xxx = "good"
# obj.h1()
# obj2 = Tom()
# obj2.xxx = "ok"
# obj2.h1()
obj = Tom("xx")#执行__init__方法,创建类的对象
obj.h1()
class zi(Tom):
def xx(self):
pass
obj2 = zi("jim")
obj2.h1()
#self,形式参数,代指执行方法的对象,python内部传递
## 封装:
# 使用场景:当同一类型的方法具有相同参数时,直接封装到对象即可。
# 使用场景:把类当做模板,创建多个对象(对象内封装的数据可以不一样)
## 继承:
# 派生类可以继承基类中所有的功能
# 派生类和基类同时存在时,优先找派生类
# python类可以同时继承多个类(c#,java不可以)
# 优先自己,左边,右边,(共同指向一个父类时不优先这个父类,图)(3.5)
## 多态:(python多态没有意义)
#python本身支持多态
#扩展:
#重载,函数名相同,参数个数不同(python不支持)
#重写,派生类中重新实现基类中的方法
#面向对象的三个特性:封装,继承,多态
#1.代码级别的接口(python默认没有接口这么一说,
# 其他语言interface IFather,约束类,类接口必须实现接口方法)
#2.项目级别的接口,就是一个地址
原文地址:https://www.cnblogs.com/currynashinians000/p/8661998.html