python面向對象,類的定義,類初始化,實例,類變量,實例變量,


:抽象的概念;是屬性和方法的集合。類中的函數叫方法。

對象instance、object

對象是類的具象,是一個實體。對象是數據和操作的封裝。

面向對象3要素:

  1.封裝

  2.繼承:

    多復用,繼承來的就不用自己寫了

    多繼承少修改。

  3.多態

    面向對象編程最靈活的地方,動態綁定。

類:

  必須使用class關鍵字。

  類名必須使用大駝峰命名。

  類定義完成后,就產生了一個類對象,綁定到了ClassName上。

類對象:類的定義就會生成一個類對象。

類的屬性:類定義中的變量和類中定義的方法都是類的屬性。

類變量:x是類MyClass的變量。

class MyClass:
    """help myclass"""
    x=123
    def foo(self):
        print(self.x)
print(MyClass)
print(MyClass.__name__)
print(MyClass.x)
print(MyClass.foo)
print(MyClass.__doc__)
print(type(MyClass))

 foo是method方法對象,不是普通的函數對象function了(函數function不在類里面),它必須至少有一個參數,且第一個參數必須是self(self可以換名字),但這個參數位置就留給了self。 java是使用this.

 self指代當前實例本身; 

 

 __init__方法

MyClass()實際上調用的是__init__(self)方法,可以不定義,如果沒有定義會在實例后隱式調用。

作用:對實例進行初始化。

__init__()方法不能有返回值,也就是只能是None.

實例可以訪問類屬性,類不可以訪問實例屬性。方法中可以通過self.y等來定義實例屬性。

初始化函數可以多參

 

 

 

 

 

 

 

 

 實例對象instance

類實例化后一定會獲得一個對象,就是實例對象。

__init__方法的第一個參數self就是指代某一個實例。

 實例變量,類變量

實例變量是每一個實例自己的變量,是自己獨有的;類變量是類的變量,是類的所有實例共享的屬性和方法。

特殊屬性:含義

__name__:對象名

__class__:對象的類型

__dict__:對象的屬性的字典

__qualname__:類的限定名

 

 總結

  是類的,也是這個類所有實例的,其實例都可以訪問到;是實例的,就是這個實例自己的,通過類訪問不到。

類變量是屬於類的變量,這個類的所有實例可以共享這個變量。

實例可以動態的給自己增加一個屬性。實例.__dict__[變量名]和實例.變量名都可以訪問到。

實例的同名變量會隱藏這類變量,或者說是覆蓋了這個類變量。

實例屬性的查找順序

指的是實例使用.來訪問屬性,會先找自己的__dict__,如果沒有,然后通過屬性__class__找到自己的類,再去類的__dict__中找。

注意,如果實例使用__dict__[變量名]訪問變量,將不會按照上面的查找順序找變量了。

一般來說,類變量使用全大寫來命名。

class Person:
    age=3
    height=170
    def __init__(self,name,age=18):
        self.name=name
        self.age=age
hua=Person('hua')
Tony=Person("Tony",20)
Person.age=30
print(Person.age,hua.age,Tony.age)#30,18,20
print(Person.__dict__,hua.__dict__,Tony.__dict__,sep="\n")
print(Person.height,hua.height,Tony.height)#170,170,170
Person.height+=20
print(Person.height,hua.height,Tony.height)#190,190,190
print(Person.__dict__,hua.__dict__,Tony.__dict__,sep="\n")
hua.height=20
print(Person.height,hua.height,Tony.height)#190,20,190
print(Person.__dict__,hua.__dict__,Tony.__dict__,sep="\n")
print(Person.__dict__["height"])
print(Tony.__dict__["height"])#報錯keyerror
#對象優先訪問自己的屬性/字典,自己沒有,則訪問類的屬性/字典

  

  

 


免責聲明!

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



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