python3 開發面試題(面向對象)6.6


"""
封裝、繼承、多態

1. 談談你對面向對象的理解?
2. Python面向對象中的繼承有什么特點?
3. 面向對象深度優先和廣度優先是什么?
4. 面向對象中super的作用?
5. 列舉面向對象中特殊成員(帶雙下划線的特殊方法,如:__new__、__init__、__call__等)
6. 靜態方法和類方法區別?
"""
#談談你對面向對象的理解?
#面向對象,首先我們要理解對象,什么是對象?對象是特征與技能的結合體。特征即變量,技能即函數,對象就是變量和函數的結合體,在python中既有面向對象編程,
也有面向過程編程,在所做項目中需要用到哪種更加便捷就用那種編程方式,學面向對象的人,正常最常聽到的一句話就是“萬物皆對象”,我們編程就是將現實中的事物,
抽象成程序中的對象,用特征和技能去表現出對象。 # Python面向對象中的繼承有什么特點? # 減少代碼重用,可以多繼承,缺點就是把子類與父類強耦合到一起 # 面向對象深度優先和廣度優先是什么? #深度優先主要體現在經典類在菱形繼承的背景下,查找屬性的方式 #廣度優先主要體現在新式類在菱形繼承的背景下,查找屬性的方式, 經典類只在python2中,由於的python2不支持服務的倒計時,推薦用python3,python3中的所有類都是新式類。 # 面向對象中super的作用? super在子類派生出新的方法中重用父類的功能 注意:super()的返回值是一個特殊的隨想,該對象專用用來調用父類的屬性
class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __repr__(self):
        return "呵呵"

class Male(Person):
    def __init__(self, name, age):
        super().__init__(name, age)

# 列舉面向對象中特殊成員(帶雙下划線的特殊方法,如:__new__、__init__、__call__等)
# __new__ 可以調用其他類的構造方法或者直接返回別的對象來作為本類的實例。
# __init__            負責將類的實例化
# __call__             對象后面加括號,觸發執行       
# __str__             print打印一個對象時  __unicode__
# __repr__            和__str__
# __doc__             類的注釋,改屬性是無法繼承的
# __getattr__         在使用調用屬性(方式.屬性)不存在的時候觸發
# __setattr__          添加/修改屬性會觸發它的執行
#__delattr__           刪除屬性的時候會觸發
# __delete__            采用del刪除屬性時,觸發   
# 靜態方法和類方法區別?
# 1. 靜態方法: 相當於普通函數  staticmethod
# 2. 類方法: 通過類調用,第一個參數默認是類本身 classmethod

 面向過程和面向對象http://www.cnblogs.com/ManyQian/p/8797097.html

反射
通過字符串來操作類與對象的屬性,這種操作稱為反射
hasattr(obj,某種屬性)
不知道有沒有某種方法時,進行的判斷
getattr(obj,某種屬性,None)
查看某種屬性,沒有屬性,可以設置為NONE,有就返回值
setattr(obj,某種屬性,屬性對應的值)
添加obj對象的某種屬性,及其值
delattr(obj,某種屬性,屬性對應的值)
刪除obj對象的某種屬性,及其值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM