1.類里函數不帶self,這是我們調用類里的函數直接用類名.函數名()
class shop(object):
def scan_goods(): #括號內不帶self
print('瀏覽商品')
def choose_goods():
print('選擇商品')
def delete_goods():
print('刪除商品')
a=getattr(shop,'scan_goods')()
a=getattr(shop,'delete_goods')()
lis=[('瀏覽商品','scan_goods'),('選擇商品','choose_goods'),('刪除商品','delete_goods')]
for index,opt in enumerate(lis,1):
print(index,opt[0])
a=getattr(shop,opt[1])() #類名不加()直接加函數名調用
結果:
瀏覽商品
刪除商品
1 瀏覽商品
瀏覽商品
2 選擇商品
選擇商品
3 刪除商品
刪除商品
2.帶有self的類調用函數,調用類里的函數直接用類名(args1,args2).函數名()
class Animal(object):
def __init__(self,name,kind):
self.name = name
self.kind = kind
def eat(self,food): #帶有參數的self
print('%s eat %s'%(self.name,food))
def drink(self):
print('%s drink water'%(self.name))
def catch(self):
print('%s catch mouse'%(self.name))
Animal('貓','美短').catch() #調用Animal(),這里需要帶括號傳參數
結果:
貓 catch mouse
3.@staticmethod方法:
class C(object):
@staticmethod
def f():
print('runoob');
C.f(); # 靜態方法無需實例化
cobj = C()
cobj.f() # 也可以實例化后調用
