python-類方法和屬性
#類方法,屬性和迭代器 #為了類是新型的,應該把語句__metaclass__=type放在模組的開始, #或者子類化內建類object class newtype(object): pass #構造方法:一個物件建立後,會立即呼叫構造方法,即__init__ class stu: def __init__(self): self.num=56 student=stu() print(student.num) class cls: def __init__(self,name): self.name=name cl=cls('TXY') print(cl.name) #若一個類的構造方法被重寫,那麼就需要呼叫超類的構造方法, #否則物件可能不會被正確的初始化 #呼叫未繫結的超類構造方法:類名.__init__ class shape: def __init__(self):#在呼叫一個例項的方法時,self引數被自動繫結到例項:繫結方法 self.area=100 class rect(shape): def __init__(self): shape.__init__(self)#例項不會繫結,引數可以自由提供self,:未繫結方法 self.width=10 self.height=10 rec=rect() print(rec.area) print(rec.width) #使用super函式 class circle(shape): def __init__(self): super(circle,self).__init__() self.r=10 cir=circle() print(cir.area) print(cir.r) #成員訪問: ''' 基本的序列和對映規則 __len__(self):返回集合中的專案數量 __getitem__(self,key):返回鍵對應的值 __setitem__(self,key,value):按一定的方式儲存與key相關的value __delitem__(self,key):對一部分物件使用del語句時被呼叫 ''' #建立一個無窮序列 import math def checkindex(key): if not isinstance(key,int): raise TypeError if key<0: raise IndexError class AS: def __init__(self,start=0,step=1): self.start=start self.step=step self.change={} def __getitem__(self,key): checkindex(key) try: return self.change[key] except KeyError: return self.start+key*self.step def __setitem__(self,key,value): checkindex(key) self.change[key]=value s=AS(1,2) print(s[4]) #子類化列表,字典和字串 ''' 實現一個和內建列表行為相似的序列,list沒有被重寫的方法可以直接呼叫 ''' class MyList(list): def __init__(self,*args): super(MyList,self).__init__(*args) self.counter=0 def __getitem__(self,index): self.count+=1 return super(MyList,self).__getitem__(index) #屬性:通過訪問器定義的特性被稱為屬性 #建立屬性的一種機制:property函式 __metaclass__=type class Rect: def __init__(self): self.width=0 self.height=0 def getSize(self): return self.width,self.height def setSize(self,size): self.width,self.height=size size=property(getSize,setSize)#建立了屬性size rect=Rect() rect.width=20 rect.height=30 print(rect.getSize()) rect.size=(100,100) print(rect.getSize())
執行結果:
相關推薦
python-類方法和屬性
#類方法,屬性和迭代器 #為了類是新型的,應該把語句__metaclass__=type放在模組的開始, #或者子類化內建類object class newtype(object): pass #構造方法:一個物件建立後,會立即呼叫構造方法,即__init__ cl
Python的程序結構(2) -> 方法/Method -> 靜態方法、類方法和屬性方法
程序 屬性的方法 屬性方法 cls ati instance 而在 gpo int 靜態方法、類方法和屬性方法 在 Python 中有三種常用的方法裝飾器(參考裝飾器部分內容),可以使普通的類實例方法變成帶有特殊功能的方法,分別是靜態方法、類方法和屬性方法。 靜態方
python:類方法和靜態方法
1.類方法: 類屬性就是針對類物件定義的屬性 使用賦值語句在class關鍵字下方可以定義類屬性
再談python的方法和屬性私有化:單下劃線,雙下劃線
1.python的私有化:_ xx: 公有變數 _x: 單前置下劃線,私有化屬性或方法,禁止通過from modules import *匯入,但是類物件和子類可以訪問 __xx:雙前置下劃線,避免與子類中的屬性命名衝突,無法在外部直接訪問(名字重整所以訪問不到),類物
Python類和實例方法和屬性的動態綁定
tuple attribute 名稱 one 運行 作用 span people tee python中實例創建後可以給實例綁定任何屬性和方法 class Student(object): pass 給實例綁定一個屬性: s=Student() s.n
Python類中的屬性和方法總結
類中的屬性分為: 例項屬性 類屬性 類中的方法分為: 例項方法 類方法 靜態方法 類中的屬性 例項屬性: 定義:在類的方法中定義的變數 使用:建立例項物件的時候被建立,能被例項呼叫,無法被類呼叫,可以
C#可擴展編程之MEF學習筆記(三):導出類的方法和屬性(轉)
學習 說了 如何 mod ati dem ont num imp 前面說完了導入和導出的幾種方法,如果大家細心的話會註意到前面我們導出的都是類,那麽方法和屬性能不能導出呢???答案是肯定的,下面就來說下MEF是如何導出方法和屬性的。 還是前面的代碼,第二篇中已經提供了下
python私有方法和私有屬性屬性理解
__init__ out code 避免 col 系統 import name sizeof 私有屬性、方法——Python並沒有真正的私有化支持,但可用下劃線得到偽私有盡量避免定義以下劃線開頭的變量 (1)_xxx "單下劃線 " 開始的成員變量叫做保護變量
Python類(六)-靜態方法、類方法、屬性方法
init utf Coding odi 實例變量 ood pri eating __init__ 靜態方法 通過@staticmethod來定義,靜態方法在類中,但在靜態方法裏訪問不了類和實例中的屬性,但靜態方法需要類來調用 # -*- coding:utf-8
20180727 (面向對象的屬性 類方法和靜態方法)
python 復用性 減少 整體 調用 參數 空間 遇到 @property 一.屬性:將一個方法,偽裝成一個屬性,在代碼的級別上沒有本質的提升,但是可以讓其看起來更合理 property:類似於bmi這種,看起來像名詞,實際是需要計算的(動詞),或者遇到周長或者面積這種詞
python之property、類方法和靜態方法
new 增刪改查 turn 引用 dict 沒有 不同的 保護 實例化 一、完整的property1、定義一個方法被偽裝成屬性之後,應該可以執行一個屬性的增刪改查操作,增加和修改就對應著被setter裝飾的方法,刪除一個屬性對應著被deleter裝飾的方法。 @prope
python中靜態方法、類方法、屬性方法區別
ref self 使用 lan com 通過 場景 UNC cme 在python中,靜態方法、類方法、屬性方法,剛接觸對於它們之間的區別確實讓人疑惑。 類方法(@classmethod) 是一個函數修飾符,表是該函數是一個類方法 類方法第一個參數是cls,而實例方法第
python:靜態方法、類方法、屬性方法
實例 方法 strong cme str -- icm name ref 靜態方法:只是名義上歸類管理,實際上在靜態方法裏訪問不了類或實例中的任何屬性。 例子: class dog(object):----def init(self,name):--------self.n
Python中的類方法和靜態方法
作者:黎智煊 ,叩丁狼高階講師。本文為原創文章,轉載請註明出處。 類方法 是類物件所擁有的方法,需要用修飾器@classmethod來標識其為類方法,對於類方法,第一個引數必須是類物件,一般以cls作為第一個引數(當然可以用其他名稱的變數作
Python的例項方法、類方法和靜態方法之間的區別與聯絡
Python的例項方法、類方法和靜態方法 class Test: def test1(self): print('test......') @classmethod def test2(cls): print('test2......c
靜態方法,類方法,屬性,setter用法,delete用法和屬性方法的應用場景
一、靜態方法 1.1、定義 在類中的方法前面通過@staticmethod裝飾器即可把其裝飾的方法變為一個靜態方法 1 2 3 4 5 6 7 8 9 10 class Person(object): &
python類的私有屬性和公共屬性
對於python而言,類的屬性的可見度只有兩種,public和private。 類的私有屬性便是在前面加上“__”識別符號,而公共屬性則不必。 在類的外面訪問私有屬性會引發異常。 class Base: def __init__(self, value): self._
python私有方法和私有屬性
Python預設的成員函式和成員變數都是公開的,Python 私有屬性和方法沒有類似別的語言的public,private等關鍵詞來修飾。 在python中定義私有變數只需要在變數名或函式名前加上 "__"兩個下劃線,那麼這個函式或變數就會為私有的了宣告該方法為私有方法,不能在類的外部呼叫
python中的靜態方法、類方法、屬性方法
該部分的三個屬性都是高階方法,平時用的地方不是很多 一、靜態方法 靜態方法的使用不是很多,可以理解的就看一下,用的地方不是很多 class Dog(object): def __init__(self,name): self.name = name
python筆記(封裝(含類方法和靜態方法))
一、封裝: 1、廣義上面向物件的封裝:程式碼的保護,面向物件的思想本身就是一種封裝 2、只讓自己的物件能呼叫自己類的方法 3、狹義上的封裝 – 面向物件三大特性 4、屬性和方法都藏起來,不讓你看見 class Person: def __init__(self,name,pass