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

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • Python的除法可以分為地板除(你沒看錯,就是地板)和普通除法,地板除的特殊方法是__floordiv__,普通除法是__truediv__。
    地板除法和普通除法不一樣,地板除法的結果只會向下取整數。

    查看全部
  • __str__()函數似乎沒有在自定義類Person中生效,這是為什么呢?
    這是因為 Python 定義了__str()__和__repr__()兩種方法,__str()__用于顯示給用戶,而__repr__()用于顯示給開發人員,當使用str()時,實際調用的是__str__()方法,而直接輸入變量,調用的是__repr__()方法。

    查看全部
  • 通過type()函數,可以獲得變量的類型。

    n?=?1
    s?=?'this?is?a?string'
    type(n)?#?==>?<class?'int'>
    type(s)?#?==>?<class?'str'>



    通過dir()方法,可以獲取變量的所有屬性:

    >>>?n?=?1
    >>>?dir(n)
    ['__abs__',?'__add__',?'__and__',?'__bool__',?'__ceil__',?'__class__',?'__delattr__',?'__dir__',?'__divmod__',?'__doc__',?'__eq__',?'__float__',?...]
    >>>?s?=?'this?is?a?string'
    >>>?dir(s)
    ['__add__',?'__class__',?'__contains__',?'__delattr__',?'__dir__',?'__doc__',?'__eq__',?'__format__',?'__ge__',?'__getattribute__',?'__getitem__',?'__getnewargs__',?'__gt__',?'__hash__',?'__init__',?'__init_subclass__',?'__iter__',?'__le__',?'__len__',?'__lt__',?'__mod__',?'__mul__',?'__ne__',?'__new__',?...]

    在dir列出的屬性中,有很多是以下劃線開頭和結尾的,這些都是特殊的方法,稱為內建方法,在后面,我們還會學習這些方法。

    dir()返回的屬性是字符串列表,如果已知一個屬性名稱,要獲取或者設置對象的屬性,就需要用 getattr() 和 setattr( )函數了。

    >>>?getattr(p,?'name')?#?獲取name屬性
    'Alice'
    >>>?setattr(p,?'name',?'Adam')?#?設置新的name屬性
    >>>?s.name
    'Adam'


    查看全部
  • 這時有必要去判斷數據的類型,通過函數isinstance()可以判斷一個變量的類型。

    class?Person(object):
    ????def?__init__(self,?name,?gender):
    ????????self.name?=?name
    ????????self.gender?=?gender
    
    class?Student(Person):
    ????def?__init__(self,?name,?gender,?score):
    ????????super(Student,?self).__init__(name,?gender)
    ????????self.score?=?score
    
    class?Teacher(Person):
    ????def?__init__(self,?name,?gender,?course):
    ????????super(Teacher,?self).__init__(name,?gender)
    ????????self.course?=?course
    
    p?=?Person('Tim',?'Male')
    s?=?Student('Bob',?'Male',?88)
    t?=?Teacher('Alice',?'Female',?'English')

    當我們拿到變量 p、s、t 時,可以使用 isinstance 判斷類型:

    >>>?isinstance(p,?Person)
    True?#?p是Person類型
    >>>?isinstance(p,?Student)
    False?#?p不是Student類型
    >>>?isinstance(p,?Teacher)
    False?#?p不是Teacher類型

    這說明在繼承鏈上,一個父類的實例不能是子類類型,因為子類比父類多了一些屬性和方法。

    s 是Student類型,不是Teacher類型,這很容易理解。但是,s 也是Person類型,因為Student繼承自Person,雖然它比Person多了一些屬性和方法,但是,把 s 看成Person的實例也是可以的。


    isinstance也可以用于Python自有數據類型的判斷。

    s?=?'this?is?a?string.'
    n?=?10
    isinstance(s,?int)?#?==>?False
    isinstance(n,?str)?#?==>?False


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

    2020-10-04

  • 在定義Student類的時候,由于繼承了Person類,所以Student類自動擁有name、gender屬性,因此,在定義Student類的時候,只需要把額外的屬性加上即可。

    class?Student(Person):
    ????def?__init__(self,?name,?gender,?score):
    ????????super(Student,?self).__init__(name,?gender)
    ????????self.score?=?score
    
    student?=?Student('Alice',?'girl',?100)
    print(student.name)?#?==>?Alice
    print(student.gender)?#?==>?girl
    print(student.score)?#?==>?100

    在定義繼承類的時候,有幾點是需要注意的:

    1. class Student()定義的時候,需要在括號內寫明繼承的類Person

    2. 在__init__()方法,需要調用super(Student, self).__init__(name, gender),來初始化從父類繼承過來的屬性


    查看全部
    0 采集 收起 來源:Python繼承類

    2020-10-04

  • 在class中定義的全部是實例方法,實例方法第一個參數 self 是實例本身。
    要在class中定義類方法,需要這么寫:

    class?Animal(object):
    ????__localtion?=?'Asia'
    ????def?__init__(self,?name,?age):
    ????????self.name?=?name
    ????????self.age?=?age
    
    ????@classmethod
    ????def?set_localtion(cls,?localtion):
    ????????cls.__localtion?=?localtion
    
    ????@classmethod
    ????def?get_localtion(cls):
    ????????return?cls.__localtion
    
    print(Animal.get_localtion())?#?==>?Asia
    Animal.set_localtion('Afica')
    print(Animal.get_localtion())?#?==>?Africa

    和實例方法不同的是,這里有兩點需要特別注意:

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

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

    ? ??? ?因為是在類上調用,而非實例上調用,因此類方法無法獲得任何實例變量,只能獲得類的引用。


    查看全部
  • 私有屬性沒有辦法從外部訪問,只能在類的內部操作;那如果外部需要操作私有屬性怎么辦?這個時候可以通過定義類或者實例的方法來操作私有屬性.

    class?Person(object):
    
    ????def?__init__(self,?name):
    ????????self.__name?=?name
    
    ????def?get_name(self):
    ????????return?self.__name

    name是實例的私有屬性,從外部是無法訪問的,而get_name(self) 就是一個實例方法,在實例方法里面是可以操作私有屬性的,注意,它的第一個參數是self。
    另外,__init__(self, name)其實也可看做是一個特殊的實例方法。
    通過定義get_name(self)方法,在外部就可以通過這個方法訪問私有屬性了。

    p?=?Person('Alice')
    print(p.get_name())?#?==>?Alice


    查看全部
  • 通過input()函數,輸入的是字符串,需要轉型為數字類型。

    查看全部
  • Python的sys.path返回的是一個路徑列表,因此可以操作列表里面的元素,請通過sys.path增加路徑'../',使得在運行時,可以導入當前目錄上級目錄的包。


    import?sys
    sys.path.append('../')


    查看全部
  • Python使用import語句導入一個模塊

    如果希望導入模塊的指定部分屬性或函數,那么使用from...import...語句

    如果希望導入模塊里面的所有內容,那么使用from ...import *語句。

    如果從一個模塊導入函數,有可能會遇到導入的函數與本文件的函數沖突的情況。例如:本文件定義了一個pow()函數,同時從math模塊也導入了一個pow()函數,這種情況下就會引起沖突;事實上,這種沖突的情況經常發生。
    有兩種方法可以解決這個問題,第一種是直接導入模塊,不指定導入模塊里面的具體內容;第二種方法就是使用from ... import as ...語句,as類似重命名,可以把導入的函數或屬性重命名為別的名字。

    查看全部
    0 采集 收起 來源:Python導入模塊

    2020-09-28

  • 在Python中,函數其實是一個對象,我們可以將一個函數賦值給一個變量,而不改變函數的功能。

    如果把一個類實例也變成一個可調用對象,可以實現一個特殊的方法__call__()。

    查看全部
  • 由于Python是動態語言,任何實例在運行期都可以動態地添加屬性。

    如果要限制添加的屬性,就可以利用Python的一個特殊的__slots__來實現。

    __slots__的目的是限制當前類所能擁有的屬性,避免因為外部屬性的操作導致類屬性越來越難以管理。

    查看全部
  • 如果一個類表現得像一個list,想使用len()函數來獲取元素個數時,則需要實現__len__()方法。

    查看全部
  • Python 定義了__str()__和__repr__()兩種方法,__str()__用于顯示給用戶,而__repr__()用于顯示給開發人員,當使用str()時,實際調用的是__str__()方法,而直接輸入變量,調用的是__repr__()方法。

    查看全部
  • 類的特殊方法:
    1. 雙下劃線開頭

    2.雙下劃線結束

    3.每個Python對象都擁有特殊方法

    查看全部

舉報

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

微信掃碼,參與3人拼團

微信客服

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

幫助反饋 APP下載

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

公眾號

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

友情提示:

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