python基礎易錯題

2021-09-27 05:53:37 字數 4064 閱讀 9254

1.以下**輸入什麼:

class

person:

a = 1

def__init__

(self):

pass

defgetage(self):

print(__name__

)p =person()

p.getage()

結果為:

__main__

2.為了讓下面這段**執行,需要增加哪些**?

class

a(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)

答案為:

class

a(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.下面這段**輸入什麼?

class

b(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 init

b fn

new 20init 20a fn

4.新增**,使以下程式執行,並返回指定結果

class

a(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()

返回結果:

default

default

default

答案為: 新增__getattr__()魔術方法

class

a(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()

擴充套件:

class

a(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)

輸出為:

init

other 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相乘並把結果返回。

def

mulby(num):

defgn(val):

return num *val

returngn

zw = mulby(7)

print(zw(9));

7.解析下面的**慢在哪

def

strtest1(num):

str='

first

'for i in

range(num):

str+="x"

return

str

答案:python的str是個不可變物件,每次迭代,都會生成新的str物件來儲存新的字串,num越大,建立的str物件越多,記憶體消耗越大。

8.有如下的一段**:

class

a(object):

defshow(self):

print

'base show

'class

b(a):

defshow(self):

print

'derived show

'obj =b()

obj.show()

如何呼叫類a的show方法了。

方法如下:

obj.__class__ =a

obj.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,但是卻不一定理解下邊的選項為啥錯。下邊我來乙個乙個分...