Вы можете использовать V Python в классе OOP? - PullRequest
0 голосов
/ 12 февраля 2020

Я моделирую Солнечную систему и использую объектно-ориентированное программирование, чтобы упростить добавление новых планет.

from vpython import *

#gravitational constant
G = 6.674e-11
#seconds in a day
dt = 86400

step = 1
maxstep = 3000

class Planet:

    def __init__(self, mass, radius, position, velocity):
        self.mass = mass
        self.radius = radius
        self.position = position
        self.velocity = velocity

class Star:

    def __init__(self, mass, radius):
        self.mass = mass
        self.radius = radius

Earth = Planet(5.972e24, 6371, vector(0,1.47e8,0), vector(-29.951,0,0))
Mercury = Planet(3.285e23, 2439.7, vector(0,4.6e7,0), vector(-47.400,0,0))
Sun = Star(1.989e30, 696340)

#acceleration vectors
a_Earth = -G*Sun.mass*Earth.position/mag(Earth.position)**3
a_Mercury = -G*Sun.mass*Mercury.position/mag(Mercury.position)**3

#position vectors
Earth.position = Earth.position + Earth.velocity*dt + 0.5*a_Earth*dt**2

Я пытаюсь использовать V * Команда сферы 1005 * для представления планет и звезды, есть ли способ использовать ее в классе при определении новых?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Попробуйте создать сферу подклассов (is-a) или пусть у вашего класса есть сфера (has-a).

0 голосов
/ 13 февраля 2020

Конечно. Например, завершите свой Pl anet init этим:

возвратная сфера (масса = масса, радиус = радиус, pos = положение, скорость = скорость)

где pos и radius - атрибуты сферы V Python, а масса и скорость - ваши собственные атрибуты.

Для вопросов V Python лучше отправлять сообщения на форум V Python, где есть гораздо больше V Python пользователей, которые увидят ваш вопрос, чем если вы отправите сообщение в stackoverflow:

https://groups.google.com/forum/?fromgroups&hl=en#! Forum / v python -users

...