1. 程式人生 > >python-類方法和屬性

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