1.以下**輸入什麼:
classperson:
a = 1
def__init__
(self):
pass
defgetage(self):
print(__name__
)p =person()
p.getage()
結果為:
__main__
2.為了讓下面這段**執行,需要增加哪些**?
classa(object):
def__init__
(self,a,b):
self.
__a =a
self.
__b =b
defmyprint(self):
print('a=
', self.__a, '
b=', self.__b)
a1=a(10,20)
a1.myprint()
a1(80)
答案為:
classa(object):
def__init__
(self, a, b):
self.
__a =a
self.
__b =b
defmyprint(self):
print('a=
', self.__a, '
b=', self.__b)
def__call__
(self, num):
print(
'call:
', num + self.__a)
3.下面這段**輸入什麼?
classb(object):
deffn(self):
print(
'b fn
')def
__init__
(self):
print(
"b init
")class
a(object):
deffn(self):
print(
'a fn
')def
__new__
(cls,a):
print("
new"
, a)
if a>10:
return super(a, cls).__new__
(cls)
return
b()
def__init__
(self,a):
print(
"init
", a)
a1 = a(5)
a1.fn()
a2=a(20)
a2.fn()
答案為:
new 5b initb fn
new 20init 20a fn
4.新增**,使以下程式執行,並返回指定結果
classa(object):
def__init__
(self,a,b):
self.a1 =a
self.b1 =b
print(
'init
')def
mydefault(self):
print(
'default
')a1 = a(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
返回結果:
defaultdefault
default
答案為: 新增__getattr__()魔術方法
classa(object):
def__init__
(self,a,b):
self.a1 =a
self.b1 =b
print('
init
')def
mydefault(self):
print(
'default
')def
__getattr__
(self,name):
return
self.mydefault
a1 = a(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
擴充套件:
classa(object):
def__init__
(self, a, b):
self.a1 =a
self.b1 =b
print('
init')
def mydefault(self, *args):
print('
default:
' +str(args[0]))
def__getattr__
(self, name):
print("
other fn:
", name)
return
self.mydefault
a1 = a(10, 20)
a1.fn1(33)
a1.fn2(
'hello')
a1.fn3(10)
輸出為:
initother fn: fn1
default:33other fn: fn2
default:hello
other fn: fn3
default:10
5.乙個包裡有三個模組,mod1.py, mod2.py, mod3.py,但使用from demopack import *匯入模組時,如何保證只有mod1、mod3被匯入了。
答案:增加__init__.py檔案,並在檔案中增加:
__all__ = ['mod1
','mod3
']
6.寫乙個函式,接收整數引數n,返回乙個函式,函式的功能是把函式的引數和n相乘並把結果返回。
defmulby(num):
defgn(val):
return num *val
returngn
zw = mulby(7)
print(zw(9));
7.解析下面的**慢在哪
defstrtest1(num):
str='
first
'for i in
range(num):
str+="x"
return
str
答案:python的str是個不可變物件,每次迭代,都會生成新的str物件來儲存新的字串,num越大,建立的str物件越多,記憶體消耗越大。
8.有如下的一段**:
classa(object):
defshow(self):
'base show
'class
b(a):
defshow(self):
'derived show
'obj =b()
obj.show()
如何呼叫類a的show方法了。
方法如下:
obj.__class__ =aobj.show()
__class__方法指向了類物件,只用給他賦值型別a,然後呼叫方法show,但是用完了記得修改回來。
C C 基礎易錯題整理5
1.若x 為整數,c語言 正確 表達 數學 式 0 x 5的是 a.0 x 5 b.x 0 x 1 x 2 x 3 x 4 c.x 0 x 5 d.x 0 x 5 正確答案 d 你的答案 b 錯誤 a選項,0 x 5這種寫法在c語言中是錯誤的,應該寫作 x 0 x 5 所以a選項錯誤。b選項,題幹中...
SQL測驗易錯題
sql 測驗 結果 17 20 您的回答 1.sql 指的是?您的回答 structured query language 2.哪個 sql 語句用於從資料庫中提取資料?您的回答 select 3.哪條 sql 語句用於更新資料庫中的資料?您的回答 update 4.哪條 sql 語句用於刪除資料庫...
c易錯題(一)
刷題也有幾天了,把自己刷題過程的錯題整理出來,以便以後不會再犯同樣的錯誤 1.已知int a 3 4 則下列可以表示a 1 2 元素的值的是 a.a 1 2 b.a 1 2 c.a 0 1 2 d.a 0 1 這道題看著不是很難,差不多可以選出a,但是卻不一定理解下邊的選項為啥錯。下邊我來乙個乙個分...