#python #matlab
#python #matlab
Вопрос:
Я хотел бы знать, возможно ли создавать переменные структуры и их соответствующие поля в Python, как это возможно в MATLAB.
Например: я хочу создать переменную структуры с именем человека и его характеристиками в виде полей:
John.name = 'John'
John.age = 30
John.sex = 'Male'
John.height = 1.85
John.weight = 85
Затем я выполню некоторые операции с этими переменными, например, проверю, старше ли Джону 18:
if John.age > 18: ....
Ответ №1:
Структуры в python отсутствуют, поскольку все рассматривается как объект.
Мое лучшее предложение — создать класс для того, для чего вы изначально предназначали структуру. Что-то похожее на:
class Person:
def __init__(self, name, age, height, weight):
self.name = name
self.age = age
self.height = height
self.weight = weight
# creating the object
john = Person('John', 20, 184, 75)
# Accessing the fields
if john.age > 18:
...
В качестве альтернативы вы могли бы использовать словарь
John = {}
# setting a field
John['age'] = 20
# using a field
if John['age'] > 18:
...
Ответ №2:
Существуют различные конструкции, которые вы можете использовать, и какая из них наиболее подходит, зависит от того, что именно вы собираетесь с ней делать. В приведенном вами примере и при условии, что значения атрибутов не меняются, namedtuple
может быть хорошим кандидатом здесь:
from collections import namedtuple
Person = namedtuple("Person", ["name", "age", "sex", "height", "weight"])
John = Person("John", 30, "Male", 1.85, 85)
if John.age > 18:
...
Ответ №3:
Вы также можете использовать классы для реализации struct.
class Person:
def __init__(self, **kwargs):
for i in kwargs:
setattr(self, i, kwargs[i])
john = Person(name="John", age=30)
print(john.name, john.age) # John 30
Ответ №4:
вы можете использовать словари, например
John = {
'name' : 'John'
'age' : 30
'sex' : 'Male'
'height' : 1.85
'weight' : 85
}
if John['age'] > 18:
print('older than 18')
или другим способом вы можете использовать ООП «Объективно ориентированное программирование», например:
#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: ....