語法:對象
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'}