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

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

内容简介:当我们使用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...

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

查看所有标签

猜你喜欢:

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

Introduction to Programming in Java

Introduction to Programming in Java

Robert Sedgewick、Kevin Wayne / Addison-Wesley / 2007-7-27 / USD 89.00

By emphasizing the application of computer programming not only in success stories in the software industry but also in familiar scenarios in physical and biological science, engineering, and appli......一起来看看 《Introduction to Programming in Java》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

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

正则表达式在线测试