Python中向物件動態新增方法

2021-09-08 09:06:05 字數 1194 閱讀 3366

#定義乙個類

class cat(object):

pass

#例項話乙個cat物件

c = cat()

#向類中動態新增屬性

c.color = "white"

print(c.color)

結果為:

white
如果依照相同的方法新增方法,則:

#定義乙個類

class cat(object):

pass

#例項話乙個cat物件

c = cat()

#向類中動態新增屬性

c.color = "white"

print(c.color)

def eat(self):

print("貓在吃東西。。")

c.eat = eat

c.eat()

這時,結果為:

white

traceback (most recent call last):

file "向類中動態新增方法.py", line 16, in c.eat()

typeerror: eat() missing 1 required positional argument: 'self'

出現錯誤,正確的方法為:先導入types模組,並呼叫方法methodtype(function, instance)向例項物件中新增方法,function為要向物件中新增的方法,instance為接受方法的物件:

import types

#定義乙個類

class cat(object):

pass

#例項話乙個cat物件

c = cat()

#向類中動態屬性

c.color = "white"

print(c.color)

def eat(self):

print("貓在吃東西。。")

# c.eat = eat

#向類中動態新增方法

c.eat = types.methodtype(eat, c)

c.eat()

執行結果為:

white

貓在吃東西。。

動態的向ListView中新增資料

一般情況下,listview都需要在執行時進行改變。如果簡單的往與listview關聯的list中新增資料,是不會引起介面變化的。如果新增了資料之後,呼叫listview.invalidate 也是無效的。必須使用與之關聯的adapter進行更新。如下 adapter adapter adapter...

C 中如何向陣列中動態新增元素

背景 現需要向陣列中迴圈插入字串,但c 中的陣列是不支援動態新增元素的,只能建立固定大小的陣列,該如何解決呢?1.string陣列轉list string string strarray new string 也可string strarray list strlist new list strar...

js 向陣列物件中新增屬性和屬性值

let resultlist resultlist.foreach tem 迴圈向陣列resultlist中新增age屬性let resultlist resultlist.foreach item 向陣列中的子屬性新增屬性 var jsonstr json.stringify resultlist...