1. 程式人生 > >python之類與物件的屬性

python之類與物件的屬性

類相關的知識

在python2中的區分:

經典類:

class School:
    pass

新式類:

class School(object):
    pass

 在python3中以上兩種均為經典類

屬性:

  • 資料屬性:就是變數
  • 函式屬性:就是函式,在面向物件裡通常稱為方法

注:類和物件均用點來訪問自己的屬性

類的屬性

資料屬性即變數,類的定義與函式又及其相似,其實可以用函式的作用域來理解類的屬性呼叫

類的資料屬性:

class School:
    Teacher = "老王"
print(School.Teacher)

類的函式屬性(一般稱為方法):

class School:
    Teacher = "老王"
    def Examination(self):
        print("%s的班級正在考試"%self)
School.Examination("alex")

檢視類屬性:

檢視類屬性的兩種方式:

  1. dir(類名) 查出的是一個名字列表
  2. 類名.__dict__ 查出的是一個字典,key是屬性名,value是屬性值

#注意:類名加點呼叫自己的屬性實際上就是到屬性字典裡去找東西

class School:
    Teacher = "老王"
    def Examination(self): print("%s的班級正在考試"%self) print(dir(School)) #檢視類的屬性 print(School.__dict__) #檢視類的屬性字典 print(School.Teacher)#同print(School.__dict__["Teacher"]) 呼叫資料屬性 School.Examination("alex")#同School.__dict__["Examination"]("alex") 呼叫函式屬性

 特殊的類屬性:

class School:
    """
    文件
    """ Teacher = "老王" def Examination(self): print("%s的班級正在考試"%self) print(School.__name__) #檢視類名 print(School.__doc__) #檢視文件 print(School.__base__) #檢視類的第一個父類 print(School.__bases__) #檢視類所有父類構成的元組 print(School.__dict__) #檢視類的屬性 print(School.__module__) #檢視類所在哪個模組 print(School.__class__) #例項School對應的類(僅新式類中)

物件相關知識

物件是由類例項化而來,例項化結果成為一個例項或者稱作一個物件

例項化:

class School:
    """
    文件
    """ Teacher = "老王" def Examination(self): print("%s的班級正在考試"%self) School() #類名加上括號就是例項化(可以理解函式執行的返回值就是一個例項)

例項屬性:

class School:
    """
    這是一個學校類
    """ dang = "dang" #例項化,init函式不可以有返回值,返回值為空 def __init__(self,name,addr,type): self.mingzi = name #p1.mingzi = name self.dizhi = addr #p1.dizhi = addr self.leixing = type#p1.leixing = type #考試 def Examination(self): print("%s正在考試"%self.mingzi) #招生 def Recruit_students(self): print("%s正在招生"%self.mingzi) person = School("oldboy","沙河","私立") person.Examination() """ 1、例項化的過程本質上就是呼叫__init__的執行 2、self就是例項本身=person 3、class會自動幫__init__返回值 4、例項只有資料屬性,print(person.__dict__) 5、例項呼叫函式屬性,實際上呼叫的是類的函式屬性,person.Examination() 6、print(person.dang)跟函式作用域一樣,在自己的作用域找不到會去上一層找 7、類有資料屬性和函式屬性,例項只有資料屬性 8、例項呼叫函式屬性.class會幫你把例項本身傳給函式 """