CMDB_唯一标识+面向对象版本区别+importlib 反射代码

栏目: Python · 发布时间: 5年前

内容简介:当我们使用salt-stack远程控制我们的机器时候,都是通过一个唯一的标识去链接,那么这个唯一标识如何定义呢?如果我们远程的机器是虚拟机,唯一的标识不是咱们server的sn号 也不是IP,那是什么呢?id这个在salt-stack已经帮我们规定好了,不允许有任何重复的id,这样不管是虚拟机还是物理机都有一个唯一标识的id了。

唯一标识问题

当我们使用salt-stack远程控制我们的机器时候,都是通过一个唯一的标识去链接,那么这个唯一标识如何定义呢?

如果我们远程的机器是虚拟机,唯一的标识不是咱们server的sn号 也不是IP,那是什么呢?

id这个在salt-stack已经帮我们规定好了,不允许有任何重复的id,这样不管是虚拟机还是物理机都有一个唯一标识的id了。

面向对象 python 2-3的区别

python2:

不写 object 就是 经典类 ,写 object 就是 新式类

class Foo()     --> 经典类
class Foo(object)       -->  新式类

python3:

写不写object 都是 新式类

class Foo()     --> 新式类
class Foo(object)       -->  新式类

例如:

经典类:

class D():
    def run(self):
        print('this D')
    
class C():
    def run(self):
        print('this C')
    
class B(D):
    pass

class A(B,C):
    pass
    
demo=A()
demo.run()

如果使用python2版本去执行: 经典类(深度优先)
this D

新式类:

class D(object):
    def run(self):
        print('this D')
    
class C(D):
    def run(self):
        print('this C')
    
class B(D):
    pass

class A(B,C):
    pass
    
demo=A()
demo.run()

如果使用python2版本去执行: 新式类(非广度优先)
this C

importlib 反射代码

三个方法:getattr,hasattr,setattr。

直接来看代码:

路径为:func/hosts/disk.py

class Disk(object):
    def run(self):
        print("disk running...")

调用disk.py

import importlib
#from func.hosts import disk
Host_func_dic = {
    'disk':'func.hosts.disk.Disk',
#    'disk':'func.hosts.cpu.Cpu',
#    'disk':'func.hosts.mem.Mem',
}
path = Host_func_dic.get('disk')        ##path == 'func.hosts.disk.Disk'

module_path,class_name = path.rsplit('.',maxsplit=1)        ##resplit右边开始分割,只分割1次,
print('module_path-->',module_path)     #func.hosts.disk
print('class_name-->',class_name)       ##Disk

#下面相当于from func.hosts import disk
module = importlib.import_module(module_path)
#import_module反射,getattr(disk,'Disk'),disk 代表disk.py,Disk代表类
disk_class = getattr(module,class_name)
#实例化Disk类
JG=disk_class()
JG.run()    ##执行run方法

执行结果:

module_path--> func.hosts.disk
class_name--> Disk
disk running...

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python学习手册(第4版)

Python学习手册(第4版)

[美] Mark Lutz / 李军、刘红伟 / 机械工业出版社 / 2011-4 / 119.00元

Google和YouTube由于Python的高可适应性、易于维护以及适合于快速开发而采用它。如果你想要编写高质量、高效的并且易于与其他语言和工具集成的代码,《Python学习手册:第4 版》将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者。本书是易于掌握和自学的教程,根据作者Python专家Mark Lutz的著名培训课程编写而成。 《Python学习手册:第......一起来看看 《Python学习手册(第4版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试