解決Python不定例項的函式呼叫問題

2021-10-12 17:54:16 字數 1383 閱讀 6146

要求:用指定的例項名呼叫函式

先想當然地寫一下

cat vim my_exec.py 

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sys

class personcomputer():

def __init__(self,name):

self.name = name

def say_hi(self):

print "hellow,this is {}!".format(self.name)

if __name__ == '__main__':

x1 = personcomputer('host1')

x2 = personcomputer('host2')

sys.ar**[1].say_hi()

本意是呼叫指令碼的時候帶上x1或者x2,這樣就能列印對應的host名字,結果報錯

$ python my_exec.py x1

traceback (most recent call last):

file "my_exec.py", line 18, in sys.ar**[1].say_hi()

attributeerror: 'str' object has no attribute 'say_hi'

這樣傳入的字元,當然不會被當成是例項了,也就無法呼叫類定義的函式。

這個時候exec()就要出馬了

$ cat my_exec.py 

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sys

class personcomputer():

def __init__(self,name):

self.name = name

def say_hi(self):

print "hellow,this is {}!".format(self.name)

if __name__ == '__main__':

x1 = personcomputer('host1')

x2 = personcomputer('host2')

exec("{}.say_hi()".format(sys.ar**[1]))

執行一下

$ python my_exec.py x1

hellow,this is host1!

$ python my_exec.py x2

hellow,this is host2!

python函式不定參

寫函式時,預先可能不確定會傳入多少個引數,以及傳入的方式,這時候可以通過不定參的形式傳遞 def test args,kwargs print args args print kwargs kwargs if name main test 1,2,3,4,a 5,b 6,c 7 args 1,2,3...

python函式不定引數求和

想最快的入門python嗎?請搜尋 泉小朵 來學習python最快入門教程。也可以加入我們的python學習q群 902936549,送給每一位python的小夥伴教程資料。先來看python函式定引數求和 def dup1 m n l total 0 total m n l return tota...

python3 函式 不定長引數 不定參

第一種不定長引數 args args 稱為不定長引數,只能放在形參的最後位置,返回的是乙個元組 def num a,b,args print a print b print args num 11,22 返回結果 1122 33,55會放在元組args中 num 11,22,33,55 返回結果 1...