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

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

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

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

查看所有标签

猜你喜欢:

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

从规范出发的程序设计

从规范出发的程序设计

[美] Carroll Morgan / 裘宗燕 / 机械工业出版社 / 2002-8 / 45.00元

本书详细论述了有关规范程序设计的内容,包括:程序和精化、谓词演算、选择、迭代、构造类型、模块和封装等,最后几章还包含了大量的实例研究和一些更高级的程序设计技术。本书提倡一种严格的程序开发方法,分析问题要用严格方式写出程序的规范,而后通过一系列具有严格理论基础的推导,最终得到可以运行的程序。 本书是被世界上许多重要大学采用的教材,适于计算机及相关专业的本科生和研究生使用。一起来看看 《从规范出发的程序设计》 这本书的介绍吧!

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

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换