原創 python 實體類

2021-07-29 02:57:53 字數 3198 閱讀 3923

之前寫過一篇:《python 封裝-實現 c#實體類》 

過程比較複雜,**一堆一堆的的

今天呢,再補發乙個實測可用哦~

1 # -*- coding:utf-8 -*-

2 3 # @version: 1.0

4 # @author: zhangzhipeng

5 # @date: 2015-07-13

6 7 from collections import namedtuple

8 910 class entity(object):

1112     """docstring for entity"""

1314     def __init__(self, class_name, columns, **kwargs):

15         super(entity, self).__init__()

16         _columns = [i.strip() for i in columns.split(" ") if i.strip()]

17         _columns.extend(kwargs.keys())

18         columns = list(set(_columns))

19         entity = namedtuple(class_name, columns)

20         self._entity = entity(**kwargs)

2122     def __getattribute__(self, key):

23         entity = super(entity, self).__getattribute__("_entity")

24         try:

25             return super(entity, self).__getattribute__(key)

26         except:

27             return getattr(entity, key)

2829     def __setattr__(self, key, value):

30         if key == "_entity":

31             super(entity, self).__setattr__("_entity", value)

32             return

33         entity = super(entity, self).__getattribute__("_entity")

34         try:

35             # setattr(entity, key, value)

36             entity.__setattr__(key, value)

37         except:

38             super(entity, self).__setattr__(key, value)

3940

41 if __name__ == '__main__':

42     user =

43     entity = entity("user", "", **user)

44     print entity

45     # print dir(entity)

46     print entity.name, entity.age

47     # print entity.score

4849     entity.score = 200

50     print entity.score

5152     entity.name = 'zhang'

53     print entity.name

5455     entity.*** = "boy"

56     print "***:", entity.***

57

輸出如下:

zhangzhipeng@earth:test$ python entity.py

<__main__.entity object at 0x7f863f08c050>

zhipeng 20

zhang

***: boy

可以把這個當作基類來用,

1 # -*- coding:utf-8 -*-

2 3 # @version: 1.0

4 # @author: zhangzhipeng

5 # @date: 2015-07-13

6 7 from entity import entity

8 910 class userentity(entity):

1112     """docstring for userentity"""

1314

15 if __name__ == '__main__':

16     user =

17     user_entity = userentity("user", "", **user)

18     print user_entity

19     # print dir(user_entity)

20     print user_entity.name, user_entity.age

21     # print user_entity.score

2223     user_entity.score = 200

24     print user_entity.score

2526     user_entity.name = 'zhang'

27     print user_entity.name

2829     user_entity.weibo = 'sina'

30     print user_entity.weibo

31

執行效果:

zhangzhipeng@earth:test$ python user_entity.py

<__main__.userentity object at 0x7f8d38497950>

zhipeng 14

zhang

sina

參考《convert python dict to object?》

建立實體類

下面直奔今天的主題 建立實體類 一點小插曲 接觸abp框架之前,一直都是使用的ef的dbfirst,在那種模式下,我們只要設計好資料庫,然後直接通過模板就生成了實體層,甚至都沒怎麼留意實體層的 是什麼樣子。現在要使用codefirst,就要反過來,先要寫 了,真有點不適應。好吧,為了學好abp,也要...

字典實體類 DictionaryEntry類

dictionaryentry類是乙個字典集合,主要包含的內容是鍵 值對。這種組合方式可以方便地定位資料,其中的 鍵 具備唯一性,類似於資料庫中的 id 乙個id對應一天記錄,而乙個鍵只對應乙個值。使用dictionaryenry類可以方便地設定和檢索資料。雖然被稱為字典集合,但dictionary...

C 反射實體類

using system using system.collections.generic using system.text using system.reflection namespace easysrcoreclass.component.utilcomponent 設定屬性值 public...