日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

繼承:是面向對象編程最重要的特性之一,例如,我們每個人都從祖輩和父母那里繼承了一些體貌特征,但每個人卻又不同于父母,有自己獨有的一些特性。在面向對象中被繼承的類是父類或基類,新的類稱為子類或派生類。通過繼承不僅可以實現代碼的重用,還可以理順類與類之間的關系。

重寫:父類的成員都會被子類繼承,當父類中某個方法不完全適用子類,就需要在子類中重新父類方法。在子類中如果定義了__init__()方法時,子類是不會自動調用父類的__init__()方法,此時如果不手動添加,運行代碼就會報錯。需要在子類使用super()函數調用父類的__init__()方法,而且必須在首行。

封裝:提高程序安全性,將屬性、類包裝到類中。Python/ target=_blank class=infotextkey>Python 中沒有專門到修飾符用于屬性到私有,如果屬性不希望在類對象外部被訪問,可以使用兩個'_'。

多態:讓具有不同功能的函數可以使用相同的函數名,這樣就可以用一個函數名調用不同內容(功能)的函數。可以理解為一個事物的多種形態。調用同一個函數,傳入不同的參數,實現不同的功能。

代碼中還寫了一些特殊的方法和特殊屬性,可以注意下!!!

'''
封裝: 提高程序安全性,將屬性、類包裝到類中
python 中沒有專門到修飾符用于屬性到私有,如果屬性不希望在類對象外部被訪問,可以使用兩個'_'

'''
class Studen:
    def __init__(self,name,age):
        self.name = name
        self.__age = age   #不希望age在外部使用,前面加兩個__

    def show(self):
        print('nihal',self.name,self.__age)

    def __run(self):   #私有方法
        pass
st = Studen('za',18)
st.show()

print(st.name)
# print(st.age)   #不能訪問age,因為age私有,但可以通過下面訪問

print(dir(st))   #可以查看屬性和方法
print(st._Studen__age)  #在類但外部可以通過,_Studen__age這種方式訪問

'''
繼承:提高代碼復用性
class  子類名(父類1,父類2,父類3.....):
    pass

如果一個類沒有繼承任何一個類,則默認繼承object
【注意】在繼承中,子類但構造函數必須調用父類但構造函數
'''

class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def info(self):
        print('姓名{0},年齡{1}'.format(self.name,self.age))

class Student(Person):
    def __init__(self,name,age,score):
        super().__init__(name,age)   #子類繼承父類,在構造函數中必須用super調用父類構造函數
        self.score = score
    def run(self):
        print(f'score is {self.score}')
    def info(self):         #重寫父類方法
        super().info();     #調用父類方法
        print(f'score is {self.score}')

st = Student('ge',29,100)
st.info()


'''
重寫父類方法,super().父類方法
'''
st.info()    #重寫之后,先調用自己但方法

'''
object類: 
'''

class Teacher(Person):
    def __init__(self):
        pass
    def __str__(self):
        print("重寫此方法,返回對類對象但描述")

'''
多態:具有多種形態,
不知道一個變量所引用但對象到底是什么類型,仍然可以通過這個變量調用方法,在運行過程中根據變量所引用對象但類型,動態決定調用哪個對象中但方法

JAVA是靜態語言,其實現多態的三個必要條件
1、繼承
2、方法重寫
3、父類引用指向子類對象

動態語言崇尚"鴨子類型",只關注對象行為,不必關注對象
'''

class Animal:
    def eat(self):
        print('動物會吃')

class Dog(Animal):
    def eat(self):
        print('狗吃肉')
class Cat(Animal):
    def eat(self):
        print('貓吃魚')
class Person:
    def eat(self):
        print('人吃五谷雜糧')
    def __add__(self, other):
        return  self.name +other.name

#定義一個函數
def fun(obj):
    obj.eat()

fun(Cat())
fun(Dog())
fun(Animal())
fun(Person())  #多態

'''
特殊方法和特殊屬性
屬性:__dict__: 獲得對象或實例對象所綁定的索引屬性和方法的字典
屬性:__len__():通過重寫__len__()方法,讓內置函數len()的參數可以是自定義類型
方法:__add__():通過重寫__add__()方法,可是自定義對象具有'+'功能
方法:__new__():用于創建對象
方法:__init__():創建的對象進行初始化
'''

p = Person()
print(p.__dict__) #實例對象的
print(Person.__dict__)   #類的
print(p.__class__)   #對象所屬的類
c = Cat()
print(Cat.__base__) #父類元素,如果有多個父類,用bases

a=10
b=30
c = a+b
print(c)
c = a.__add__(b)
print(c)

p1 = Person()
p1.name = 'zhang'
p2 = Person()
p2.name = 'san'

print(p1.__add__(p2))
print(p1+p2)   #因為在Person類中寫了__add__()方法,才能使用相加

'''
__new__與__init__
__new__ : 在前創建對象
__init__:對已經創建的對象初始化
'''


class Car:
    def __new__(cls, *args, **kwargs):
        pass
    def __init__(self):
        pass

分享到:
標簽:python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定