日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

四十一、python面向对象二

發布時間:2024/9/5 python 43 如意码农
生活随笔 收集整理的這篇文章主要介紹了 四十一、python面向对象二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
A、成員:
1.字段:靜態字段(每個對象都有同一字段),普通字典(每個對象都有不同的數據)
2.方法:靜態方法(無需使用對象的內容),類方法,普通方法(使用對象中的數據)
3.特性:普通特性(將方法偽造成字段)
   通過類去訪問的有:靜態字段,靜態方法,類方法
   通過對象去訪問的有:普通字段,類的方法
   自己的成員自己去訪問
   靜態方法:沒有self,前添加@staticmethod,即為靜態方法(通過類去訪問)
   類方法:比靜態方法多一個參數,該參數是為了顯示哪個類,前添加@classmethod
   特性:將方法未造成字段來執行,前添加@property 快速判斷,類執行,對象執行
self 對象調用
無self 類調用
test01
class Provice:

    #靜態字段,類中
country="China" def __init__(self,name): #普通字段,對象中
self.name=name #普通方法,類中
def show(self):
print("show") #靜態方法
@staticmethod
def add():
print("加法") #類方法,多一個參數
@classmethod
def dev(cls):
print("減法",cls) #特性,將方法未造成字段來執行
@property
def csv(self):
print("csv") #設置csv中的值,3個csv處名字必須相同
@csv.setter
def csv(self,value):
print(value)
pro=Provice("山東")
print(Provice.country)
print(pro.name)
Provice.add()
print(Provice.dev())
print(pro.csv)
pro.csv="123456"
-------------------------------------------------

  China
  山東
  加法
  減法 <class '__main__.Provice'>
  csv
  123456

B、利用反射導入模塊、查找類、創建對象、查找對象中的字
imp=__import__("test01",fromlist=True)
print(imp) class_name=getattr(imp,"Foo")
print(class_name) r=class_name('zhangyu')
print(r)
print(getattr(r,'name'))
----------------------------------------

  <module 'test01' from 'F:\\myworkspacedirectory\\Function\\member\\test01.py'>
  <class 'test01.Provice'>
  <test01.Provice object at 0x00000247FEFC79E8>
  zhangyu

C、成員修飾符
成員:
字段:靜態字段(每個對象都有同一字段),普通字典(每個對象都有不同的數據)
方法:靜態方法(無需使用對象的內容),類方法,普通方法(使用對象中的數據)
特性:普通特性(將方法偽造成字段)
兩種:共有的,私有的(兩個下劃線開頭,只有自己能使用,派生類也不能訪問)
class Provice:

    #靜態字段,類中
country="China" #私有字段,供內部使用
__country = "Eglish" def __init__(self,name,name1): #普通字段,對象中
self.name=name
#私有的有普通字段
self.__name1=name1 def __add(self):
print("__add") @staticmethod
def __dev():
print("__dev") # 普通方法,類中
def show(self):
print("show")
print(Provice.__country)
self.__name1="666"
self.__add()
self.__dev() @staticmethod
def mm():
Provice.__dev
Provice.__name1 = "6661" obj=Provice("zhangyu","nnn")
print(Provice.country) #錯誤情況
#print(Provice.__country)
obj.show()
Provice.mm()
---------------------------------------------

  China
  show
  Eglish
  __add
  __dev

D、類的特殊成員1
__init__
__del__
__call__===>Django
xxx.__dict__:可查看類中的成員
class Foo:
'''
我是類的注釋
'''
country="zhongguo" def __init__(self):
self.name="666" def __call__(self, *args, **kwargs):
print("call")
return 1 def __getitem__(self, item):
print(item,type(item),"__getitem__") def __setitem__(self, key, value):
print(key,value,"__setitem__") def __delitem__(self, key):
print(key,"__delitem__") def add(self):
print("1") # r=Foo()()
# print(r) r=Foo() #------------->執行init
r() #------------------>執行__call__
r['k1'] #------------------>執行__getitem__
r['k2']='666' #------------------>執行__setitem__
del r['xxx'] #------------------>執行__執行__delitem__
r[1:5:2] #2.7執行getslice 3.0執行getitem
r[1:3:3]=[11,22,33,44,55,66] #2.7執行setslice 3.0執行setitem
del r[1:3:3] #2.7執行detslice 3.0執行detitem print(r.__dict__)
print(Foo.__dict__)
----------------------------------------------

  call
  k1 <class 'str'> __getitem__
  k2 666 __setitem__
  xxx __delitem__
  slice(1, 5, 2) <class 'slice'> __getitem__
  slice(1, 3, 3) [11, 22, 33, 44, 55, 66] __setitem__
  slice(1, 3, 3) __delitem__
  {'name': '666'}

{'__module__': '__main__', '__doc__': '\n 我是類的注釋\n ', 'country': 'zhongguo', '__init__': <function Foo.__init__ at 0x000001C307CB8950>, '__call__': <function Foo.__call__ at 0x000001C307CB89D8>, '__getitem__': <function Foo.__getitem__ at 0x000001C307CB8A60>, '__setitem__': <function Foo.__setitem__ at 0x000001C307CB8AE8>, '__delitem__': <function Foo.__delitem__ at 0x000001C307CB8B70>, 'add': <function Foo.add at 0x000001C307CB8BF8>, '__dict__': <attribute '__dict__' of 'Foo' objects>, '__weakref__': <attribute '__weakref__' of 'Foo' objects>}

E、iter:類的特殊成員2
class Foo:

    def __iter__(self):
yield 1
yield 2
yield 3
yield 4 obj=Foo()
#如果執行for對象時,自動會執行對象的iter方法,生成器
for i in obj:
print(i)
----------------------------------------------------
1
2
3
4


總結

以上是生活随笔為你收集整理的四十一、python面向对象二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。