Python中的结构/字段变量

Python中的结构/字段变量,python,matlab,Python,Matlab,我想知道是否可以像在MATLAB中一样,在Python中创建结构变量及其各自的字段 例如:我想创建一个结构变量,将人名及其特征作为字段: John.name = 'John' John.age = 30 John.sex = 'Male' John.height = 1.85 John.weight = 85 然后我将使用这些变量执行一些操作,例如检查John是否超过18岁: if John.age > 18: .... 例如,你可以使用字典 John = { 'name' :

我想知道是否可以像在MATLAB中一样,在Python中创建结构变量及其各自的字段

例如:我想创建一个结构变量,将人名及其特征作为字段:

John.name = 'John'
John.age = 30
John.sex = 'Male'
John.height = 1.85
John.weight = 85
然后我将使用这些变量执行一些操作,例如检查John是否超过18岁:

if John.age > 18: ....

例如,你可以使用字典

John = {
'name'   :  'John'
'age'    :  30
'sex'    :  'Male'
'height' :  1.85
'weight' :  85
}

if John['age'] > 18:
    print('older than 18')
或者使用OOP“面向目标编程”的其他方式,例如:

    #creation class with name person:
    class person:

        #define init function to initialize main variables:
        def __init__(self, name, age,sex,height,weight):

            #define main variables you want to store and use
            self.name    = name
            self.age     = age
            self.sex     = sex
            self.height  = height
            self.weight  = weight
    
    #using class to store data you  want:
    John = person('John',30,'Male',1.85,85)
    Mario = person('Mario',25,'Male',1.90,80)

    #using data you stored:
    print(John.name)
    print(John.age)
    print(Mario.sex)
    
    #and your example is ready
    if John.age > 18: ....

python中不存在结构,因为所有内容都被视为对象

我最好的建议是为您最初打算的结构做一个简单的说明。类似于:

班级人员:
定义初始(自我、姓名、年龄、身高、体重):
self.name=名称
self.age=年龄
自我高度=高度
自重
#创建对象
约翰=人(“约翰”,20,184,75)
#访问字段
如果john.age>18岁:
...
或者,你可以使用字典


约翰={}
#设置字段
约翰[年龄]=20
#使用字段
如果John['age']>18岁:
...

您还可以使用类来实现struct

班级人员:
定义初始(自我,**kwargs):
我在夸尔格:
setattr(self、i、kwargs[i])
约翰=人(姓名=“约翰”,年龄=30岁)
印刷品(约翰.姓名,约翰.年龄)#约翰30

您可以使用不同的构造,哪种构造最合适取决于您打算使用它做什么。在您给出的示例中,假设属性的值不发生变化,则在这里可能是一个很好的候选者:

from collections import namedtuple

Person = namedtuple("Person", ["name", "age", "sex", "height", "weight"])

John = Person("John", 30, "Male", 1.85, 85)

if John.age > 18:
    ...