Python 類,方法,屬性

1    個人第一個Python類python

>>> import paramiko
>>> import sys
>>> import os
>>> class TestClass1():
...     tmp = 10
...     def Method1 (self):
...         self.tmp = 20

上面的類中定義了屬性tmp ,在下面的方法中又對屬性進行了修改,驗證結果以下:mysql

>>> obj1 = TestClass1()    # 類先實例化
>>> obj1.tmp               # 調用類的屬性
10
>>> obj1.Method1()         # 調用類的方法
>>> obj1.tmp
20

    注意:類中的方法中必須有self,如上面的def Methon1 (self)sql

>>> class TestClass1():
...     tmp = 10
...     def Method1 (self,x=20):     # 方法中傳參數x,這個x的默認值是20
...         self.tmp = x
...         self.tmp2 = x
...         
...     
... 
>>> obj1 = TestClass1()
>>> obj1.tmp
10
>>> obj1.Method1()
>>> obj1.tmp
20
>>> obj1.Method1(30)
>>> obj1.tmp
30

2    Python的構造方法api

    Python的類默認都繼承了基類,咱們也能夠本身構建本身的構造方法。解釋:構造方法就是對類的屬性,初始化。服務器

>>> class TestClass1():
...     def __init__(self,x,y,z):       # 構造方法,傳參數並初始化
...         self.x = x
...         self.y = y
...         self.z = z
...     def OtherMethon(self):          # 自定義方法
...         print self.x,self.y,self.z
...         
...     
... 
>>> obj2 = TestClass1(1,2,3)            # 類實例化的時候傳入參數經過構造方法進行屬性初始化
>>> obj2.x
1
>>> obj2.y
2
>>> obj2.z
3
>>> obj2.OtherMethon()
1 2 3

 

3    Python 類和方法寫的一個計算器python2.7

#!/usr/bin/python2.7
#_*_coding:utf8_*_
# Aut wangzilong
# 2016-10
#
# 導入系統模塊
import os
# 導入參數獲取模塊
import sys

import re

#1 定義類
class JiSuanQi():
    
#  1.1 定義構造函數,初始化全部參數
      def __init__(self,x,y):
          self.x = x
          self.y = y
      
#  1.2 定義加法
      def add(self,x,y):
          self.addx = int(x)
          self.addy = int(y)
          return self.addx + self.addy
#  1.3 定義減法
      def jianfa(self,x,y):
          self.jfx = int(x)
          self.jfy = int(y)
          return self.jfx - self.jfy
#  1.4 定義乘法
      def chengfa(self,x,y):
          self.cfx = int(x)
          self.cfy = int(y)
          return self.cfx * self.cfy

#  1.5 定義除法
      def chufa(self,x,y):
          self.chfx = int(x)
          self.chfy = int(y)
          if self.chfy == 0:
              return '除數不能爲0'
          else:
              return self.chfx / self.chfy


prelist = sys.argv
last = ''
if len(prelist) <>  4:
    print '請輸入正確參數'
else:
    meth = prelist[1]
    num1 = prelist[2]
    num2 = prelist[3]
    tmpobj = JiSuanQi(1,1)
    
    if meth == 'add' :
     last = tmpobj.add(num1,num2)
    elif meth == 'jianfa':
     last = tmpobj.jianfa(num1,num2)
    elif meth == 'chengfa':
     last = tmpobj.chengfa(num1,num2)
    elif meth == 'chufa':
     last = tmpobj.chufa(num1,num2)
    else:
        print '沒有這個功能'

print last

 

4    paramiko 模塊ssh

    4.1 下載paramiko 軟件包並經過Python 安裝。函數

            下載地址:http://pan.baidu.com/s/1o7Jzl3s.net

             解壓後進入文件夾進行安裝python2.7 setup.py installcode

             安裝完成以後再bpython中就能夠import paramiko 了

    4.2 一個用paramiko 模塊編寫的Python腳本

#!/usr/bin/env python
# encoding: utf-8

#executive command
#導入模塊
import paramiko
#實例化化一個sshclient對象
ssh = paramiko.SSHClient() 
#把沒有在~/.ssh/know_hosts的指紋按照策略自動添加進去
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#開始鏈接,並把用戶名,密碼,端口,主機名或ip地址傳遞到對方進行驗證
ssh.connect('192.168.6.77',22,'root','answer@1')
#把執行的指令使用多變量賦值
#標準輸出,標準輸入,標準錯誤輸出都分別定義
stdin,stdout,stderr = ssh.exec_command('uptime')
#打印輸出內容
print stdout.read()
#關閉鏈接
ssh.close()

#upload file

import os
import sys
import paramiko
upload = paramiko.Transport(('192.168.6.77',22))
upload.connect(username='root',password='answer@1')
upload_exec = paramiko.SFTPClient.from_transport(upload)
upload_exec.put('paramiko_interoduct.py','/tmp/paramiko_interoduct.py')
upload.close()

#download file
import os
import sys
import paramiko
download = paramiko.Transport(('192.168.6.77',22))
download.connect(username='root',password='answer@1')
download_exec = paramiko.SFTPClient.from_transport(download)
download_exec.get('/tmp/1.txt','./1.txt')
download.close()

#from password key upload or download file
import  paramiko
pravie_key_path = './id_rsa'
password_key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
upload = paramiko.Transport(('192.168.6.77',22))
upload.connect(username='root',pkey=password_key)
upload_exec = paramiko.SFTPClient.from_transport(upload)
upload_exec.put('paramiko_interoduct.py','/tmp/paramiko_interoduct.py')
upload.close()

import paramiko
pravie_key_path = './id_rsa'
password_key = paramiko.RSAKey.from_private_key_file(pravie_key_path)
download = paramiko.Transport(('192.168.6.77',22))
download.connect(username='root',pkey=password_key)
download_exec = paramiko.SFTPClient.from_transport(download)
download_exec.get('/tmp/1.txt','./1.txt')
download.close()

#!/usr/local/python27/bin/python
#_*_ coding:utf8 _*_
#

from fabric.api import *
from fabric.colors import *

#定義遠程服務器角色列表
env.roledefs = {
        'cobbler':['root@172.16.10.12:22',],
        'clinent':['root@172.16.10.16:22',]
                  }

#對角色和任務進行裝飾
#run(command)執行指令
#put(local_file,remote_file)上傳至角色服務器上
#get(remote_file,local_file)從角色服務器上下載至本地服務器

@roles('cobbler')
def task1():
     b = run('yum install mysql mysql-server -y')
     #b = run('ifconfig eth0')
     print red(b)

@roles('clinent')
def task2():
    a = run('yum install mysql mysql-server -y')
    #a = run('ls -l ')
    print green(a)

def dotask():
    execute(task1)
    execute(task2)
fabric執行和以往的腳本執行有些許不一樣
安裝完畢fabric以後它會提供一個fab的指令經過fab指令去執行調用fab模塊api編寫的腳本
命令格式:fab -f script_name.py function
其中script_name:就是腳本名字也就是你編寫的文件
function:是script_name文件的函數(方法)


#!/usr/local/python27/bin/python
#_*_ coding:utf8 _*_
#

from fabric.api import *
from fabric.colors import *
host12 = 'root@172.16.10.12:22'
host13 = 'root@172.16.10.13:22'
host14 = 'root@172.16.10.14:22'
host15 = 'root@172.16.10.15:22'

env.passwords = {
                 host12:"xxxxxx",
                 host13:"xxxxxx",
                 host14:"xxxxxx",
                 host15:"xxxxxx",
                 }
                                               
env.roledefs = {
               'net_1':[host12,host13],
               'net_2':[host14,host15]
               }

@roles('net_1')
def task1():
    put('/tmp/up1.txt','/tmp/up1.txt')
    get('/tmp/uplooking.txt','/tmp/uplooking.txt')
    # run('ip addr|grep 192')

@roles('net_2')
def task2():
    run('ip addr|grep 192')

#def dotask(): #    execute(task1) #    execute(task2)

相關文章
相關標籤/搜索