python-面向對象(四)——類成員的訪問方式匯總


 

類成員的訪問方式

 

#!/usr/bin/env python
# _*_coding:utf-8 _*_

class pepole(object):

'''This is  __doc__ information!!!'''

    country = "CHINA"   #靜態字段 存在類里
    __city = "BeiJing"   #私有靜態字段

    def siyou(self):     #私有字段在內部設置方法可以訪問
        return pepole.__city

    def __init__(self,name,age,weight):
        self.name = name
        self.age = age    #普通字段,動態字段,對象字段  存在對象里
        self.weight = weight
        self.__name2 = "FUCK"   #私有普通字段,通過內部間接訪問,也可通過特殊方法訪問


    def __call__(self, *args, **kwargs):
        print 'This is __call__!!!'


    def func(self):         #括號里至少一個參數,可以多個
        print self.__name2  #內部簡介訪問私有字段
        return  "123"


    def __infunc(self):   #私有方法,通過內部簡介訪問
        print "This is __infunc!"

    def run_infunc(self):  #通過內部間接的訪問私有方法

        self.__infunc()

    @classmethod     #類方法
    def class_func(cls):     #括號里只能有一個參數 cls
        return  "class_method"

    @staticmethod   #靜態方法括號里不需要參數(),可以有個多參數
    def sts():
        print "This is staticmethod"

    @staticmethod      #靜態的私有方法,屬於類,內部間接訪問
    def __static_func():    #靜態方法括號里不需要參數(),可以有個多參數
        print "This is __static_func"

    def run_static(self):  #簡介訪問靜態私有方法
        pepole.__static_func()

    @property     #屬性把一個方法偽造成一個字段、一個屬性,像字段那樣的屬性而不是一個功能
    def att(self):    #只能有一個self參數
        return  "property"

    def __str__(self):
        return "This is __str__"

#class Son(pepole):  #繼承people的派生類,不能拿到父類中的私有方法或字段
#    def show(self):
        #print pepole.__city
#        pass


obj = pepole("chenchao",18,70)

print obj.__doc__#查看類里的注釋信息

obj()   #執行__call__ 方法  在對象的后面加()

printobj.country    #執行靜態字段

print obj.name    #執行字段self.name = "chenchao"

print obj.siyou()  #內部訪問間接的調用私有字段  __city = "Beijing"

print obj.func()   #執行普通方法    def func(self):

print pepole.class_func()   #類方法 調用類方法   @classmethod

pepole.sts()     #調用靜態方法    @staticmethod

print obj.att      #執行屬性的方法,不帶括號 @property

obj.run_infunc()   #執行私有方法 (間接訪問) def __func_method()

obj.run_static()   #執行靜態的私有方法(間接訪問)

print pepole.__dict__ #獲取類的成員,即:靜態字段,方法

print obj.__dict__  #獲取obj對象的成員  普通字段,私有普通字段

print obj   #類中定義了__str__方法,打印對象默認輸出方法的返回值
print str(obj)   #自動去類中找__str__方法並得到返回值

from test import pepole

obj2 = pepole("zhangsan",22,66)

print  obj2.__module__   #表示當前操作的對象在那個模塊
print obj2.__class__     #表示當前操作的對象的類是什么


print obj._pepole__name2  #特殊方法訪問對象中的私有普通字段
print pepole._pepole__city #特殊方法訪問類中的私有靜態字段
obj._pepole__infunc()  #特殊方法訪問類中的私有方法
#obj2 = Son()
#obj2.show()   #如果是繼承的關系,那么派生類不能訪問父類中的私有方法或私有字段
  

  

 

isinstance()  issubclass()

#!/usr/bin/env python
# _*_coding:utf-8 _*_

a = 10

class A():
    print  "This is class A"

class B(A):
    print "This is class B"

w = B()

print isinstance(w,B)       #True    判斷對象w 是否是類B的對象
print isinstance(w,A)       #True    類的基類也可行
print isinstance(a,int)     #True


print issubclass(B,A)       #True    判斷B是A的派生類或 A是B的基類
print isinstance(B,int)     #False

 

isinstance(obj=對象, cls=)           
檢查obj是否是類 cls 的對象       is instance :實例
 
 
issubclass(sub=子類, super=父類)
檢查sub類是否是 super 類的派生類   is subclass:子類

 


免責聲明!

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



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