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...

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

查看所有标签

猜你喜欢:

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

实现领域驱动设计

实现领域驱动设计

Vaughn Vernon / 滕云 / 电子工业出版社 / 2014-3 / 99.00元

领域驱动设计(DDD)是教我们如何做好软件的,同时也是教我们如何更好地使用面向对象技术的。它为我们提供了设计软件的全新视角,同时也给开发者留下了一大难题:如何将领域驱动设计付诸实践?Vaughn Vernon 的这本《实现领域驱动设计》为我们给出了全面的解答。 《实现领域驱动设计》分别从战略和战术层面详尽地讨论了如何实现DDD,其中包含了大量的最佳实践、设计准则和对一些问题的折中性讨论。《实......一起来看看 《实现领域驱动设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

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

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具