У меня следующая проблема, я любитель сценариев Python. Я создал следующий класс
roof_height = 3.5 #m
E = 30000*(10^3) #kN/m^2
class Brace():
_registry = []
def __init__(self,name,coord,b,d, h = roof_height):
print('Brace created.')
Brace._registry.append(self)
self.name = name
self.coord = coord # pass tuple in the form of (x,y)
self.b = b # //x global
self.d = d # //y global
self.h = h
def __del__(self):
print('Destructor called, Brace deleted.')
Brace._registry.remove(self)
def properties(self):
print("properties of " + self.name + " calculated")
As = self.b*self.d
Iy = self.b*(self.d**3)*(1/12)
Iz = (self.b**3)*(self.d)*(1/12)
self.Iy = Iy
self.Iz = Iz
self.As = As
def stiffness(self):
print("stiffnesses of " + self.name + " calculated")
Kx = 12*E*self.Iy/self.h
Ky = 12*E*self.Iz/self.h
self.Kx = Kx
self.Ky = Ky
Я создал общее свойство _registry класса, чтобы можно было перебирать объекты, что прекрасно работает. Проблемы, с которыми я сталкиваюсь, следующие:
1. Когда я создаю объект, распечатка
'Brace created'
отображается, но когда я удаляю это сообщение
'Destructor called, Brace deleted.'
не отображается, пока объект удаляется, также список _registry остается тем же без удаления объекта. Длина списка, очевидно, остается неизменной.
- Как я могу избежать создания одного и того же экземпляра дважды с одним и тем же именем, я имею в виду, как я могу проверить дубликаты экземпляров (одно и то же имя объекта и значения атрибута)
Нужно ли писать код для него или есть встроенная функция, которую я могу использовать?