绑定,反射,内置函数
admin
2023-07-19 00:42:29
0
#绑定方法:绑定给谁就应该谁来调用,谁来调用就会把谁当做第一个参数自动传入
import  setting   #配置文件为setting

class  mysql:
    def __init__(self,host,port):   #绑定到对象
        self.host=host
        self.port=port

    @classmethod     #绑定到类
    def from_conf(cls):
        return cls(setting.HOST,setting.PORT)

    @staticmethod  #不与类也不与对象绑定
    def creat_id():
        n=eroos
        return n

con=mysql.from_conf()
print(con.port,con.host)
com=mysql.creat_id()
print(com.create_id)

#反射  通过字符串来操作对象或者类的属性 1.hasattr  2.setattr 3.getattr 4.delattr
class foo:
    def __init__(self,name):
        self.name=name

    def f1(self):
        print('f1')

obj=foo('abc')

#hasattr()  判断
print(hasattr(obj,'name'))
print(hasattr(obj,'f1'))

#getattr  调用
if hasattr(obj,'f1'):
    f=getattr(obj,'f1')
    #print(f)   
    f()

#setattr()  修改
obj.x=1
setattr(obj,'x',2)
print(obj.__dict__)

#delattr 删除
#del obj.name
delattr(obj,'name')
print(obj.__dict__)

class fprser:
    def __init__(self,host,port):  
       self.host=host
       self.port=port
       self.conn='xxx'
    def intera(self):
       while True:
           cmd=input('>>: ').strip()
           if not cmd:continue
           cmd_l=cmd.split() 
           print(cmd_l) 
           if hasattr(self,cmd_l[0]):
              func=getattr(self,cmd_l[0])
              func(cmd_l)

    def get(self,cmd_l):
        print('geting......',cmd_l)

    def put(self,cmd_l):
        print('puting...',cmd_l)

client=fprser('2.2.2.2',23)        
client.intera()

#内置函数
isinstance() #判断一个对象是不是某个类型的
l=list([])
print(isinstance(l,list))

issubclass() #判断是不是某个的子类
class foo:
    pass
class bar(foo):
    pass
print(issubclass(bar,foo))

#__str__ #打印时触发,默认打印内存地址
class foo:
    def  __init__(self,name,age):  #初始化时触发
        self.name=name
        self.age=age

    def __str__(self):  ##打印时触发
        return <__main__,.......>  #可以修改打印自己需要的
conf=foo('abc',38)
print(conf)  #print(abc.__str__())

#__del__ 回收之后在打印del
class foo:
    def __del__(self):
        print('del....')

obj=foo()
print('123')

class foo:
    def __del__(self):
        print('del....')

obj = foo()
del obj
print('123')

相关内容

热门资讯

中国和蒙古国外长会谈联合新闻公... 新华社乌兰巴托6月14日电 中华人民共和国和蒙古国外交部长会谈联合新闻公报应蒙古国国家大呼拉尔委员、...
俄总统助理:特朗普告知俄方美伊... 新华社莫斯科6月14日电 俄罗斯总统助理乌沙科夫14日说,美国总统特朗普在与俄总统普京进行电话交谈时...
大国博弈下,一场没有终局的产业... 【文/王力 编辑/周远方】6月8日,五角大楼正式发布最新版1260H“中国涉军企业”清单,药明康德与...
让儿童手表回归定位、通话等刚需... 一块小小的儿童手表,原本承载着家长对孩子安全的牵挂,为何却成了防不胜防的隐患入口? 近年来,儿童智能...
意通电力取得输配电电缆线芯分离... 国家知识产权局信息显示,安徽意通电力设备有限公司取得一项名为“一种输配电电缆线芯分离装置”的专利,授...
具身智能、低空技术、AI 融合... 极目新闻记者 狄鑫 张静娴 邹浩 摄影记者 宋枕涛 实习生 钟世炫 宋逸雪 6月14日,极目新闻高招...
苹果没告诉你的事:你关心的调休... 🙏🏻 Good Morning! 随着 Tim 又一次的「早上好」,WWDC 2026 拉开了帷幕...
计算机专业, 现在还能闭眼选么... 今天我们来聊聊当下最纠结的志愿填报板块——计算机大类。 在过去很长一段时间里,计算机几乎是“闭眼选...
原创 实... #机器人伴侣仅限成人购买 #登上全网热搜,随着人工智能、仿生技术不断成熟,各类具备情感交互、陪伴聊天...
日系巨头要为中国品牌代工了 在欧洲,一家日系车巨头正在为中国品牌腾出核心产线。近日,日产汽车宣布,与奇瑞国际英国公司正式签署非约...