亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • 注意:要想將文件寫成多行,要在每一行的后面加上換行符\n

    查看全部
  • read(n)讀取n個字符

    readline()讀一行

    readlines(n)讀n行,以列表形式返回


    讀取一個文件,并把文件內容打印出來

    with?open('requirements.txt','r')?as?f:
    ????lines?=?f.readlines()
    ????print(lines)
    ????txt?=?''
    ????for?line?in?lines:
    ????????txt?+=?line
    ????print(txt)
    ==>
    ['paddlepaddle==2.3.2\n',?'paddlenlp==2.4.1\n',?'regex\n',?'fastcore\n',?'scikit-image']
    paddlepaddle==2.3.2
    paddlenlp==2.4.1
    regex
    fastcore
    scikit-image

    注意:

    換行符也是字符!

    查看全部
  • 在Python中,模塊(功能模塊)就是一個.py文件

    查看全部
    0 采集 收起 來源:Python定義模塊

    2024-09-01

  • __call__()

    工作原理:

    當你嘗試以函數的方式調用一個對象時,Python會自動查找該對象的__call__()。

    class?Fib(object):
    ????def?__init__(self):
    ????????pass
    ????????
    ????def?__call__(self,n):
    ????????fib_list?=?[]
    ????????a,b?=?0,1
    ????????for?i?in?range(n):
    ????????????fib_list.append(a)
    ????????????a,b?=?b,a+b
    ????????????
    ????????return?fib_list
    
    f?=?Fib()
    print(f(10))
    ==>
    [0,?1,?1,?2,?3,?5,?8,?13,?21,?34]

    f(10) == f.__call__(10)

    查看全部
  • Python是動態語言,實例可動態添加屬性

    student.age = 12


    __slots__是一個特殊的內置類屬性,用于限定實例屬性

    用法:

    __slots__ = ('屬性1', '屬性2'...)

    class?Person(object):
    ????__slots__?=?('name','gender')
    ????def?__init__(self,name,gender):
    ????????self.name?=?name
    ????????self.gender?=?gender
    ????????
    class?Student(Person):
    ????__slots__?=?('score')
    ????def?__init__(self,name,gender,score):
    ????????super().__init__(name,gender)
    ????????self.score?=?score
    ????????
    s?=?Student('Alice','gril',27)
    s.age?=?18
    ==>AttributeError

    __slots__的繼承

    在上面的例子中,Student 類繼承了 Person 類的?slots,同時額外定義了一個 score 屬性。這意味著 Student 類的實例只能擁有 name、age 和 score 這三個屬性。

    查看全部
  • Rational類的四則運算
    class?Rational(object):
    ????def?__init__(self,?p,?q):
    ????????self.p?=?p
    ????????self.q?=?q
    
    ????def?__add__(self,?r):
    ????????return?Rational(self.p?*?r.q?+?r.p?*?self.q,?self.q?*?r.q)
    
    ????def?__sub__(self,?r):
    ????????return?Rational(self.p?*?r.q?-?r.p?*?self.q,?self.q?*?r.q)
    
    ????def?__mul__(self,?r):
    ????????return?Rational(self.p?*?r.p,?self.q?*?r.q)
    
    ????def?__truediv__(self,?r):
    ????????return?Rational(self.p?*?r.q,?self.q?*?r.p)
    
    ????def?__str__(self):
    ????????return?'{}/{}'.format(self.p,?self.q)
    
    
    r1?=?Rational(1,?2)
    r2?=?Rational(2,?3)
    print(r1?+?r2,r1-r2,r1*r2,r1/r2)
    ==>
    7/6?-1/6?2/6?3/4

    解釋:

    1、r1 + r2 相當于 r1.add(r2)? r1調用__add__(self,r2)

    2、可以在實例方法中創建本類的實例對象

    查看全部
  • 對于內建對象(int, list, tuple, dict...),通過str()可以把對象轉換為字符串對象輸出

    num = 12
    str(num)? ==> '12'

    l = [1,2,3,4,5]
    str(l)? ==> '[1, 2, 3, 4, 5]'

    t = ('Alice',17)

    str(t) ==> '('Alice', 17)'

    d = {1: 1, 2: 2}
    str(d)? ==> '{1: 1, 2: 2}'


    對于自定義對象,需要重新定義內建方法__str__()輸出你想輸出的內容

    查看全部
  • 斐波那契數列是由 0, 1, 1, 2, 3, 5, 8...構成。

    請編寫一個Fib類,Fib(10)表示數列的前10個元素,print Fib(10) 可以打印出數列的前 10 個元素,len(Fib(10))可以正確返回數列的個數10。

    class?Fib(object):
    ????def?__init__(self,n):
    ????????self.fib_list?=?[]
    ????????a,b?=?0,1
    ????????for?i?in?range(n):
    ????????????self.fib_list.append(a)
    ????????????a,b?=?b,a+b
    ????????????
    ????def?__str__(self):
    ????????return?str(self.fib_list)
    ????????
    ????def?__len__(self):
    ????????return?len(self.fib_list)
    ????????
    f?=?Fib(10)
    print(f)
    print(len(f))
    ==>
    [0,?1,?1,?2,?3,?5,?8,?13,?21,?34]
    10
    查看全部
  • 單繼承

    class?Person(object):
    ????def?__init__(self,?name,?gender):
    ????????self.name?=?name
    ????????self.gender?=?gender
    ????????
    ????????
    class?Teacher(Person):
    ????def?__init__(self,name,gender,subject):
    ????????super(Teacher,self).__init__(name,gender)????????
    ????????self.subject?=?subject
    ????????
    t?=?Teacher('Bob','boy','english')
    print(t.name,t.gender,t.subject)
    ==>Bob?boy?english


    多重繼承

    多重繼承的目的是從兩種繼承樹中分別選擇并繼承出子類,以便組合功能使用。
    舉個例子,Python的網絡服務器有TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer,而服務器運行模式有多進程ForkingMixin和多線程ThreadingMixin兩種。
    要創建多進程模式的 TCPServer:

    class MyTCPServer(TCPServer, ForkingMixin)
    ? ?pass

    要創建多線程模式的 UDPServer:

    class MyUDPServer(UDPServer, ThreadingMixin):
    ? ?pass

    如果沒有多重繼承,實現上述所有可能的組合需要 4x2=8 個類。


    例:

    已知類Student繼承Person類,技能類BasketballMixin繼承SkillMixin類,請通過多重繼承,定義“會打籃球的學生”

    class?Person(object):
    ????def?__init__(self,?name,?age):
    ????????self.name?=?name
    ????????self.age?=?age
    
    
    class?SkillMixin(object):
    ????def?__init__(self,?club):
    ????????self.club?=?club
    
    
    class?BasketballMixin(SkillMixin):
    ????def?__init__(self,?club):
    ????????super(BasketballMixin,?self).__init__(club)
    
    
    class?Student(Person,?BasketballMixin):
    ????def?__init__(self,?name,?age,?score,?club):
    ????????super(Student,?self).__init__(name,?age,?club)
    ????????self.score?=?score
    
    
    s?=?Student('Alice',?17,?98,?'ax')
    print(s.name,?s.age,?s.score,s.club)
    class?Student(Person,?BasketballMixin):
    ????def?__init__(self,?name,?age,?score,?club):
    ????????super().__init__(name,?age)?#等于super(Student,self)...
    ????????super(Person,self).__init__(club)
    ????????self.score?=?score
    
    
    s?=?Student('Alice',?17,?98,?'ax')
    print(s.name,?s.age,?s.score,s.club)
    ==>Alice?17?98?ax

    錯誤理解:

    super().__init__() 會調用所有父類的__init__方法


    正確理解:

    super(type, object_or_type=None)

    object_or_type?確定要用于搜索的?method resolution order。 搜索會從?type?之后的類開始。

    舉例來說,如果?object_or_type?的?__mro__?為?D?->?B?->?C?->?A?->?object?并且?type?的值為?B,則?super()?將會搜索?C?->?A?->?object。

    查看全部
    0 采集 收起 來源:Python中的多態

    2024-09-01

  • isinstance(變量, 類型)判斷變量是否為該類型

    例:

    isinstance(2,int)==>True

    查看全部
    0 采集 收起 來源:Python判斷類型

    2024-08-31

  • 操作實例的私有屬性

    ==>定義實例方法??

    class?Person(object):
    
    ????def?__init__(self,?name):
    ????????self.__name?=?name
    
    ????def?get_name(self):
    ????????return?self.__name
    ????????
    ????def?set_name(self,name):
    ????????self.__name?=?name
    ????????
    p?=?Person('Alice')
    print(p.get_name())
    p.set_name('Bob')
    print(p.get_name())
    
    ==>
    Alice
    Bob
    查看全部
  • 操作類的私有屬性

    ==>定義類方法??

    class?Animal(object):
    ????__count?=?0
    ????
    ????@classmethod
    ????def?get_count(cls):
    ????????return?cls.__count
    ????????
    ????@classmethod
    ????def?set_count(cls,count):
    ????????cls.__count?=?count
    ????
    print(Animal.get_count())
    Animal.set_count(2)
    print(Animal.get_count())
    ==>
    0
    2

    和實例方法不同的:

    1、需要使用@classmethod來標記為類方法,否則定義的還是實例方法

    2、類方法的第一個參數將傳入類本身,通常將參數名命名為 cls,上面的 cls.__localtion 實際上相當于Animal.__localtion。

    查看全部
  • 私有屬性:以雙下劃線'__'開頭


    # 類私有屬性
    class Animal(object):
    ? ?__localtion = 'Asia'

    print(Animal.__localtion)

    ==>type object 'Animal' has no attribute '__localtion'


    # 實例私有屬性
    class Animal(object):
    ? ?def __init__(self, localtion):
    ? ? ? ?self.__localtion = localtion

    dog = Animal('GuangDong')
    print(dog.__localtion)

    ==>'Animal' object has no attribute '__localtion'

    查看全部
  • 請給 Animal類添加一個類屬性 count,每創建一個實例,count 屬性就加 1,這樣就可以統計出一共創建了多少個 Animal的實例。

    class?Animal(object):
    ????count?=?0
    ????def?__init__(self):
    ????????count?+=?1
    ????????
    dog?=?Animal()
    cat?=?Animal()
    print(Animal.count)
    ==>local?variable?'count'?referenced?before?assignment
    class?Animal(object):
    ????count?=?0
    ????def?__init__(self):
    ????????Animal.count?+=?1
    ????????
    dog?=?Animal()
    cat?=?Animal()
    print(Animal.count)
    ==>2

    問:

    為什么在類方法中不能直接訪問類屬性,而是要通過"類.類屬性"?

    答:

    如果你不加“類.”,他會認為count是__init__方法中的一個局部變量,就會出現上面的錯誤:變量count未定義就使用

    所以請注意:

    在類方法中引用類屬性也要通過"類.類屬性"的方式?。?!

    查看全部
    0 采集 收起 來源:Python類屬性

    2024-08-31

  • 類方法的第一個參數必須是self,但是在調用時不必傳入相應的參數。

    self指的是類實例對象本身,不是類本身。

    查看全部

舉報

0/150
提交
取消
課程須知
本課程是Python入門的后續課程 1、掌握Python編程的基礎知識 2、掌握Python函數的編寫 3、對面向對象編程有所了解更佳
老師告訴你能學到什么?
1、什么是函數式編程 2、Python的函數式編程特點 3、Python的模塊 4、Python面向對象編程 5、Python強大的定制類

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!