類成員的訪問方式
#!/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:子類