python類的語法和底層實現

語法:對象

class 類名:it

  name = 「egon」    # 類屬性io

  def __init__(self):function

    self.age = 18  # 對象屬性class

    self.__sex = "female"  #對象私有屬性module

  

  @classmethodobject

  def eat(cls):  # 類方法,必須用裝飾器修飾   ,能夠直接   類名.eat()方式調用,對象能夠經過 對象名.eat()調用,但內部使用的數據仍然是類的,所以不建議使用這種方式調用語法

    print("eating")程序

  def run(self):    #對象方法方法

    print("running")

對象名 = 類名()  # 建立對象

類在定義後,程序運行會從上往下執行,類內部代碼都會被執行,方法內部不執行

類調用本身屬性:類名.屬性,類名.類方法名()

對象調用本身屬性:對象名.屬性,對象名.對象方法名()  ==實則是對象把本身做爲參數傳給方法去調用

 

類運行和對象建立都會建立名稱空間,類和對象的名稱空間相互獨立,在對象建立時若是類的__init__方法沒有屬性,對象又沒有重寫類的屬性和方法時.語法訪問的都是類的屬性和方法,自身名稱空間沒有內容

class A:
age = 18
def __init__(self):
pass

a = A()

print(「A=」,A.__dict__)
print(「a=」a.__dict__)

===

A= {'__module__': '__main__', 'age': 18, '__init__': <function A.__init__ at 0x0000023F1A498C80>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}
a= {}

若是建立時類的__init__方法有對象屬性,則會在對象建立時附帶給對象

class A:
age = 18
def __init__(self):
self.name = "egon"

a = A()

print("A=",A.__dict__)
print("a=",a.__dict__)

====

A= {'__module__': '__main__', 'age': 18, '__init__': <function A.__init__ at 0x000001BDAC8D8C80>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}a= {'name': 'egon'}

相關文章
相關標籤/搜索