python結構體 Python中實現結構體類

2021-10-11 02:02:18 字數 1108 閱讀 1204

ruby中有乙個很方便的struct類,用來實現結構體。這樣就不用費力的去定義乙個完整的類來僅僅用作訪問屬性。

class dog < struct.new(:name, :age)

endfred = dog.new("fred", 5)

printf "name:%s age:%d", fred.name, fred.age

##name:fred age:5

python3.4中也可以這麼幹,但寫法很累贅。其中包含self.name = name 這種很煩人的寫法。

class dog(object):

def __init__(self, name, age):

self.name = name

self.age = age

fred = dog("fred", 5)

print('name: age:'.format(name=fred.name, age=fred.age))

##name:fred age:5

想到我大python是無所不能的,有沒有一種簡化結構體類屬性定義的方法呢?答案肯定是有的。在補習了一些python黑魔法技術後,我想到利用裝飾器函式和元程式設計技術來實現。

def struct(*name):

""" 裝飾器函式

用途:用於在類定義中,自動設定self.value = value

def decorator(func):

for i in range(len(name)):

setattr(args[0], name[i], args[i+1])

return func(*args, **kw)

return decorator

class dog(object):

@struct('name','age') #黑魔法所在!

def __init__(self, *all_value):

pass

fred = dog("fred", 5)

print('name: age:'.format(name=fred.name, age=fred.age))

##name:fred age:5

要注意的是,這種寫法會造成**結構的不清晰。

c 結構體 結構體指標與python類

c 和python都屬於物件導向的語言,不同之處在於python有很多整合的第三方的包,屬於上層應用的語言,c 語言主要用來做底層的開發。之所以c 和python做對比,是因為python中用類做結構體,與c 中同出一轍。不論c 還是python 函式名 表示私有成員變數 python類 class...

python 向C介面傳遞結構體陣列 結構體

c原始碼 1.c include include include 1.h int add int a,int b if 0 int add stus student data,int count return 1 int add stu student data int add data stude...

用python實現結構體陣列

在c語言中我們可以通過struct關鍵字定義結構型別,結構中的字段佔據連續的記憶體空間,每個結構體占用的記憶體大小都相同,因此可以很容易地定義結構陣列。和c語言一樣,在numpy中也很容易對這種結構陣列進行操作。只要numpy中的結構定義和c語言中的定義相同,numpy就可以很方便地讀取c語言的結構...