中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python面試題有哪些

發布時間:2021-07-22 11:07:41 來源:億速云 閱讀:105 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關python面試題有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1 談談你對面向對象的理解?

面向對象的編程---object oriented programming,簡稱:OOP,是一種編程的思想。OOP把對象當成一個程序的基本單元,一個對象包含了數據和操作數據的函數。面向對象的出現極大的提高了編程的效率,使其編程的重用性增高。

python面向對象的重要術語:

多態(polymorphism):一個函數有多種表現形式,調用一個方法有多種形式,但是表現出的方法是不一樣的。

繼承(inheritance)子項繼承父項的某些功能,在程序中表現某種聯系

封裝(encapsulation)把需要重用的函數或者功能封裝,方便其他程序直接調用

類:對具有相同數據或者方法的一組對象的集合

對象:對象是一個類的具體事例

實例化:是一個對象事例話的實現

標識:每個對象的事例都需要一個可以唯一標識這個事例的標記

python中的類與對象

class Person(object): 
def __init__(self,name): #————————>初始化函數
  self.name = name
  print "------>create:",name
def say_name(self):
  print "my name is %s" %self.name
p1 = Person("gf1") # --------->類的實例化
p2 = Person("gf2")
p1.say_name()
p2.say_name()

以上程序是類的一個基本寫法,理解如下:

  person就是一個類,在這個類中是很多的方法集合。例如類中包含sayname等,還可以按照程序要求靈活添加各種類的方法。

  類中self其實就是類的對象,是一個具體的實例。多種的實例通過類中的self表現出來。

  程序中的p1、p2是具體的實例,實體。(學名叫:對象。)。一個對象就是一個實體。實體通過調用屬性、方法在類中體現相應的功能。

python中的繼承

承就是子類繼承了父類相應的功能和方法。

如下代碼說明了子類繼承父類:

class firsttest:
def __init__(self,name):
self._name = name
def sayfirst(self):
print("hello {0}".format(self._name))
class secondtest(firsttest): #子類繼承父類(firsttest)的方法
def __init__(self,name):
firsttest.__init__(self,name)
def saysecond(self):
print("good {0}").format(self._name)
s = secondtest("gf1") #類的具體實例。
s.sayfirst()
s.saysecond()

函數和面向對象編程的區別

相同點:都是把程序進行封裝、方便重復利用,提高效率。
不同點:函數重點是用于整體調用,一般用于一段不可更改的程序。僅僅是解決代碼重用性的問題。
而面向對象出來代碼重用性。還包括繼承、多態等。使用上更加靈活。

2 面向對象中super的作用?

Python中對象方法的定義很怪異,第一個參數一般都命名為self(相當于其它語言的this,比如:C#),用于傳遞對象本身,而在調用的時候則不

必顯式傳遞,系統會自動傳遞。

今天我們介紹的主角是super(), 在類的繼承里面super()非常常用, 它解決了子類調用父類方法的一些問題, 父類多次被調用時只執行一次, 優化了執行邏輯,下面我們就來詳細看一下。

舉一個例子:

class Foo:
def bar(self, message):
print(message)
Foo().bar("Hello, Python.")
Hello, Python

當存在繼承關系的時候,有時候需要在子類中調用父類的方法,此時最簡單的方法是把對象調用轉換成類調用,需要注意的是這時self參數需要顯式傳遞,例如:

class FooParent:
def bar(self, message):
print(message)
class FooChild(FooParent):
def bar(self, message):
FooParent.bar(self, message)
FooChild().bar("Hello, Python.")
Hello, Python.

這樣做有一些缺點,比如說如果修改了父類名稱,那么在子類中會涉及多處修改,另外,Python是允許多繼承的語言,如上所示的方法在多繼承時就需要重復寫多次,顯得累贅。為了解決這些問題,Python引入了super()機制,例子代碼如下:

class FooParent:
def bar(self, message):
print(message)
class FooChild(FooParent):
def bar(self, message):
super(FooChild, self).bar(message)
FooChild().bar("Hello, Python.")
Hello, Python

表面上看 super(FooChild, self).bar(message)方法和FooParent.bar(self, message)方法的結果是一致的,實際上這兩種方法的內部處理機制大大不同,當涉及多繼承情況時,就會表現出明顯的差異來,直接給例子: 代碼一:

class A:
def __init__(self):
print("Enter A")
print("Leave A")
class B(A):
def __init__(self):
print("Enter B")
A.__init__(self)
print("Leave B")
class C(A):
def __init__(self):
print("Enter C")
A.__init__(self)
print("Leave C")
class D(A):
def __init__(self):
print("Enter D")
A.__init__(self)
print("Leave D")
class E(B, C, D):
def __init__(self):
print("Enter E")
B.__init__(self)
C.__init__(self)
D.__init__(self)
print("Leave E")
E()

結果:

Enter E
Enter B
Enter A
Leave A
Leave B
Enter C
Enter A
Leave A
Leave C
Enter D
Enter A
Leave A
Leave D
Leave E

執行順序很好理解,唯一需要注意的是公共父類A被執行了多次。

感謝各位的閱讀!關于“python面試題有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丹江口市| 句容市| 华池县| 应城市| 浦东新区| 沙田区| 会理县| 句容市| 沁源县| 余江县| 彭山县| 阿拉尔市| 新乡县| 平武县| 嘉峪关市| 榆树市| 扬州市| 兰溪市| 泗阳县| 虎林市| 淮安市| 呼和浩特市| 德惠市| 界首市| 东光县| 宜兰县| 乡城县| 武穴市| 搜索| 玉溪市| 浦城县| 泗阳县| 江孜县| 星子县| 定边县| 资溪县| 伽师县| 广宁县| 竹北市| 任丘市| 长岛县|