Python是動態語言 動態新增或刪除屬性 方法

2021-09-13 13:12:12 字數 2099 閱讀 3070

python元類

python裝飾器:python真正入門的鑑定標準

例項:

class person():

def __init__(self,name):

self.name=name

#定義乙個物件

mark=person("mark")#終於修煉**了,好開森

print("報出我的大名",mark.name)

#直接新定義屬性:age

mark.age=18

print("我的實際年齡:",mark.age)#哎?,寫大了,我還是個寶寶?

#動態刪除屬性:

del mark.age

#這種方法刪除也可以

#delattr(person,"age")

#下面一句會報錯

#print("我的實際年齡:",mark.age)#哎?,寫大了,我還是個寶寶?

結果:

報出我的大名 mark

我的實際年齡: 18

import types

class person():

def __init__(self,name):

self.name=name

def study(self):

print("學習使我快樂")

#定義乙個方法

def run(self,speed):

print("我竟然會跑?,速度:",speed)

#定義乙個類方法

@classmethod

def classmethod_fun(cls):

print("我是類方法")

#定義乙個靜態方法

@staticmethod

def static_fun():

print("我是靜態方法")

#定義乙個物件

mark=person("mark")

mark.study()

#動態生命函式

mark.run=types.methodtype(run,mark)

#跑起來?

mark.run(100)

#繫結類方法

person.classmethod_fun=classmethod_fun

#呼叫類方法

person.classmethod_fun()

mark.classmethod_fun()

#繫結靜態方法

person.static_fun=static_fun

#呼叫靜態放

person.static_fun()

#刪除方法

del person.classmethod_fun

#下面一句會異常

#mark.classmethod_fun()

#這種方法刪除也可以

delattr(person,"static_fun")

#下面一句會異常

#person.static_fun()

執行結果:

學習使我快樂

我竟然會跑?,速度: 100

我是類方法

我是類方法

我是靜態方法

僅僅對當前類有效,對繼承類無效
例項:

class person():

__slots__ = ("name","age")

mark=person()

mark.name="mark"

mark.age=18

#下面一句會報錯

mark.object="在哪"

結果:

traceback (most recent call last):

file "/users/zhaolixiang/desktop/python/test1/python是動態語言/3、slots.py", line 8, in mark.object="在哪"

attributeerror: 'person' object has no attribute 'object'

Python動態新增屬性

class student object classmethod修飾的屬性可以通過類變數和類例項變數直接呼叫 因為在這兩種情況下都可以將類變數繫結到 classmethod修飾的方法的第乙個引數上 classmethod def eat cls print eating.當類的例項動態新增屬性時 c...

什麼是「動態語言「

經過反覆的查詢,終於找到了幾個解釋,我現在把這些解釋歸納出來。所謂 動態語言 也叫指令碼語言,就是說一種在執行期間才去發現資料型別的程式語言,主要建立一些需要經常更新的動態系統。這就是動態語言的定義,聽起來還是夠明確吧。以往,我們所使用的語言,比如c,c 等等,都稱為靜態語言。什麼是靜態語言呢?就是...

python是高階動態程式語言 Python語言

python是一門跨平台 開源 免費的解釋型高階動態程式語言。python支援命令式程式設計 how to do 函式式程式設計 what to do 完全支援物件導向程式設計,擁有大量擴充套件庫。膠水語言 可以把多種不同語言編寫的程式融合到一起實現無縫拼接,更好地發揮不同語言和工具的優勢,滿足不同...