Python 動態新增屬性及方法
Python是一門動態語言,動態語言的一個主要的特性就是你那個在執行時,新增屬性以及方法。不同於靜態語言(例如c,c++,java......)他們都是通過編譯後在執行指定的編譯後的檔案。Python與他們最大的不同就是Python是動態的,程式碼的更改,無需重新編譯即可啟動。
無需編譯,對我們開發來說可以方便很多,假如一個程式很大的情況下。我們修改的需要給程式新增一段程式碼,或者某個屬性,但是需要重新編譯和執行,大大降低了我們的開發效率。Python可以實現動態的新增,下面將通過程式碼展示Python動態新增屬性及方法的例項。
這裡假如我們建立了一個Person類,在初始化方法中添加了身高體重屬性,建立完物件傳入相應的引數,就會給物件的屬性賦值傳入的引數。如果直接通過物件.未知屬性的方式,可以給物件成功新增屬性,也可以通過類名.未知屬性的方式,給類屬性賦值。class Person(object): def __init__(self, height, weight): self.height = height self.weight = weight print('xx身高%d,體重%d' % (self.height, self.weight))
person = Person(170, 75)
# 物件賦值
person.age = 107
print(person.age)
# 類賦值
Person.name = "jerry"
print(Person.name)
給物件動態新增方法(函式)
這裡我們可以先建立一個函式
def study(self): print('%s我是一個學生', self.name)
建立了一個study,方法(函式),如果想要將函式賦值給物件,這時候就不能向給屬性賦值的方式來給物件動態新增方法了,Python提供了一個方法,通過types模組中的MethodType給物件新增方法。
MethodType = class method(object)
| method(function, instance)
|
| Create a bound instance method object.
|
| Methods defined here:
我們可以看一下MethodType方法需要傳遞的引數,第一個是function,第二個是instance,第一個引數時我們需要傳遞的函式(方法),第二個引數是我們需要給的物件,通過這種方式可以給物件新增具體的方法。
person.study = types.MethodType(study, person)
person.study()
這裡就可以通過物件.具體方法的形式,來呼叫傳遞的方法。
相關推薦
Python 動態新增屬性及方法
Python是一門動態語言,動態語言的一個主要的特性就是你那個在執行時,新增屬性以及方法。不同於靜態語言(例如c,c++,java......)他們都是通過編譯後在執行指定的編譯後的檔案。Python與他們最大的不同就是Python是動態的,程式碼的更改,無需重新編
Python-動態新增屬性和方法
class Person(): Country='CN' def __init__(self,nm) self.nm=nm 動態新增例項屬性及例項方法: p=Person() p.age=18 #直接賦值,動態新增例項屬性 def set_age(self,age) #定義帶se
python 動態新增屬性和方法
首先 動態新增屬性 class Person(object): def __init__(self, newName, newAge): self.name = newName self.age = newAge laowang
python的動態新增屬性和方法
import types 如果一個類已經寫好 要想動態的新增一新的方法 那麼需要用下面方法: p1.eat = types.MethodType(eat,p1) //即把eat函式動態繫結到了p1物件上
python基礎之動態新增屬性和方法
一、新增物件屬性: >>> class student(object): pass >>> stu=student() >>> stu.name="zhang jie" #新增物件屬性 >>> stu.name 'zh
我的Python學習筆記(四):動態新增屬性和方法
一、動態語言相關概念 1.1 動態語言 在執行時程式碼可以根據某些條件改變自身結構 可以在執行時引進新的函式、物件、甚至程式碼,可以刪除已有的函式等其他結構上的變化 常見的動態語言:Object-C、C#、JavaScript、PHP、Python、Erlang 1.2 動態型別語言 在執行期間檢查資料
Python學習筆記——動態新增屬性與方法
我們都知道Python是動態語言。 動態?動態在哪裡呢? 假如C語言定義了一個類,我們在類固定的情況下,可以不可以為這個類或者這個類的物件新增物件呢?答案肯定是否定的 但是Python就可以。下面我們來看看。 一.動態新增屬性 1.動態新增物件
js物件動態新增屬性,方法
1. 動態新增屬性,方法 var object = new Object(); object.name = "name"; object.age = 19; >>>{name: "name", age: 19} object.fun = function(){ console
Python :動態給例項新增屬性的方法
#動態給例項新增屬性的方法 from types import MethodType #動態新增屬性 class Person(object) : pass per = Person() #動態新增屬性,靈活 per.name = "Tom" print(per.name)
python語言是動態語言、給類新增屬性、方法、靜態方法和類方法、__slots__()、python中的生成器、yield的用法
程式在查詢變數的定義時遵循LEGB規則 LEGB規則: locals-->enclosing function-->globals-->builtins locals當前所在名稱空間的變數 enclosing外部巢狀函式的名稱空間(閉包中常見) globa
Python中類的屬性及方法的總結及python改寫memocache啟動指令碼舉例
1.類的屬性總結 類屬性,也是公有屬性, 類的私有屬性, 物件的共有屬性, 物件的私有屬性, 內建屬性, 函式的區域性變數, 全域性變數, #/usr/bin/env python # -*- coding:utf-8 -*- class
筆記:利用 runtime 交換方法、給分類動態新增屬性
第一次寫部落格,有些小緊張,如有不對的地方還請大牛們及時指出,在此先感謝各位大牛了... 一、利用 runtime 交換方法: 1、交換方法的實現 #import "UIImage+mImage.h" @implementation UIImage (mImage) +(void)l
動態-JS實現給物件動態新增屬性並賦值 及 實現AJAX data傳遞動態key鍵名
對前段工作時間中遇到的兩種自認為比較有意義的JS動態操作資料的情況進行總結: 1.JS實現物件的動態新增屬性並賦值 例:點選觸發 通過類選擇器遍歷所有的input 並將其對應實體類的屬性及屬性值動態新增到info物件中,請求到後臺. var info = {}; $("#
python request屬性及方法說明
if request.REQUEST.has_key('鍵值'): HttpRequest物件的屬性 參考: 表 H-1. HttpRequest物件的屬性 屬性 描述 path 表示提交請求頁面完整地址的字串,不包括域名,如"/m
Python程式設計:類的例項動態增加屬性和方法
# -*- coding: utf-8 -*- # @File : 類的例項動態增加屬性和方法.py # @Date : 2018-05-31 # @Author : Peng Shiy
android在java程式碼中動態新增元件及相關佈局方法(LayoutParams)
一、前言 Android的介面佈局可以用兩種方法,一種是在xml中佈局,一種是在JAVA程式碼中實現介面的佈局。前者佈局是很方便的,但是對於需要動態的顯示介面,這個時候xml就缺少了一種靈活性。有一個需求:針對listView或者RecyclerVi
Python學習筆記(一):list屬性及方法淺析
列表學習。 List是python中的基本資料結構之一。建立一個列表的方法 L = [1,2,3,'a'] 通過help(list)檢視列表的屬性及方法。 >>> help(list) Help on class list in module builti
ios動態新增屬性的幾種方法
在ios執行過程中,有幾種方式能夠動態的新增屬性。 1-通過runtime動態關聯物件 主要用到了objc_setAssociatedObject,objc_getAssociatedObject以及objc_removeAssociatedObjects //在目標t
js 建立物件的三種方式 及獲取屬性新增屬性的方法
1:直接量法 var obj = { } ;//這是一個空物件 var point = {x:0,y=0}; //point物件有兩個屬性 x 和 y 2.通過new 建立物件 var
Ext.grid.GridPanel屬性及方法等
ble sse rst 可能 colspan ask gridpanel ted elm Ext.grid.GridPanel屬性及方法等 1、Ext.grid.GridPanel主要配置項:store:表格的數據集columns:表格列模式的配置數組,可自動創建