Итак, вернемся к статусу noob.Я пытаюсь преобразовать свое мышление в ООП из простых сценариев.У меня есть подпрограмма Python, которая работает и т.д., но я хочу, чтобы ООП его.Я застрял там, где я хотел бы пройти / вернуться между классами.
Поэтому я рассматриваю соединение с базой данных как объект.
У меня есть другой объект Pointcloud, у которого есть подкласс / дочерний класс Surface (Pointcloud).
Поверхность должна подключитьсяв базу данных, выберите несколько записей и закройте соединение.Это хранится в классе Connect (хотя до сих пор не уверен, как заставить работать cur.close ()).
Как только я выясню это, я буду на пути к ООП (надеюсь),Как только мой разум придет в правильное мышление, жизнь станет намного легче.Поэтому, пожалуйста, не могли бы вы взглянуть на мой код и объяснить / привести пример того, как это должно быть?Объекты Connect, Pointcloud, Surface работают индивидуально.
import dbconfig
import psycopg2
class Connect:
def __init__(self, schema):
self.schema = schema
@staticmethod
def get_connection():
conn = psycopg2.connect(host=dbconfig.DATABASE_CONFIG['host'],
user=dbconfig.DATABASE_CONFIG['user'],
password=dbconfig.DATABASE_CONFIG['password'],
dbname=dbconfig.DATABASE_CONFIG['dbname'])
print('connection made')
return conn
# add error catching
@staticmethod
def close_connection():
# implement cur.close()
# print('connection closed')
pass
class Pointcloud:
def __init__(self, photobatch):
self.photobatch = photobatch
def list_pointclouds(self):
return '{}'.format(self.photobatch)
class Surface(Pointcloud):
def __init__(self, photobatch, surface_type):
super().__init__(photobatch)
self.surface_type = surface_type
# this inherits all the Pointcloud attributes
# so each surface is a type of pointcloud
# we add the surface type so we can distinguish between top and base surfaces
# which is an attribute of this instance
def import_pointcloud(self):
# connect to database
print('connecting')
Connect.get_connection()
# do some database stuff to import the pointcloud and construct a numpy array
Connect.close_connection()
# return the resulting numpy array
class Bounding(Pointcloud):
# a different subclass of pointcloud
pass