面向對象【二】類與對象的屬性

python之類與對象的屬性

 

類相關的知識

在python2中的區分:html

經典類:python

1
2
class  School:
     pass

新式類:函數

1
2
class  School( object ):
     pass

 在python3中以上兩種均爲新式類post

屬性:ui

  • 數據屬性:就是變量
  • 函數屬性:就是函數,在面向對象裏一般稱爲方法

注:類和對象均用點來訪問本身的屬性url

類的屬性

數據屬性即變量,類的定義與函數又及其類似,其實能夠用函數的做用域來理解類的屬性調用spa

類的數據屬性:code

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

類的函數屬性(通常稱爲方法):htm

1
2
3
4
5
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()
"""
一、實例化的過程本質上就是調用__init__的運行
二、self就是實例自己=person
三、class會自動幫__init__返回值
四、實例只有數據屬性,print(person.__dict__) 
五、實例調用函數屬性,實際上調用的是類的函數屬性,person.Examination()  
六、print(person.dang)跟函數做用域同樣,在本身的做用域找不到會去上一層找
七、類有數據屬性和函數屬性,實例只有數據屬性
八、實例調用函數屬性.class會幫你把實例自己傳給函數
"""
複製代碼
相關文章
相關標籤/搜索