Справочная информация ниже вопроса. Я знаю, что это работает, но, как и многие вещи, работают во многих языках программирования, это может быть не хорошая практика. Так что это?
from abc import ABC, abstractmethod
class Base(ABC):
@abstractmethod
def foo(self, *args, **kwargs):
raise NotImplementedError()
class Derived(Base):
def foo(self, a, b, *args, **kwargs):
print(f"Derived.foo(a={a}, b={b}, args={args}, kwargs={kwargs})")
d = Derived()
d.foo(1, 2, 3, "bar", baz="baz")
# output:
# Derived.foo(a=1, b=2, args=(3, 'bar'), kwargs={'baz': 'baz'})
< /code>
это хорошая или плохая практика? Он возвращает какую -то ручку. Специализированные реализации всегда должны быть в состоянии возвращать своего рода ручку по умолчанию, если метод вызывается без каких -либо дополнительных аргументов. Тем не менее, они могут определить определенные флаги, чтобы настроить ручку на случай использования вызывающего абонента. В этом случае вызывающий абонент также является тем, который создал создание специализированной реализации и знает об этих флагах. Общий код, работающий только на интерфейсе или ручках, не знает об этих флагах, но не нужно.from abc import ABC, abstractmethod
class Manager(ABC):
@abstractmethod
def connect(self, *args, **kwargs):
raise NotImplementedError()
class DefaultManager(Manager):
def connect(self, *, thread_safe: bool = False):
if thread_safe:
return ThreadSafeHandle()
else:
return DefaultHandle()
Это специфично для моего варианта использования, что реализация Manager может захотеть выпустить различные реализации ручек, специфичные для использования абонента. Менеджеры определяются в одном месте в моем коде, и вызывающие абоненты могут иметь или не иметь специализированных потребностей, таких как безопасность потоков в примере, для менеджеров, которые они используют.
Справочная информация ниже вопроса. Я знаю, что это работает, но, как и многие вещи, работают во многих языках программирования, это может быть не хорошая практика. Так что это?[code]from abc import ABC, abstractmethod
class Base(ABC): @abstractmethod def foo(self, *args, **kwargs): raise NotImplementedError()
class Derived(Base): def foo(self, a, b, *args, **kwargs): print(f"Derived.foo(a={a}, b={b}, args={args}, kwargs={kwargs})")
d = Derived() d.foo(1, 2, 3, "bar", baz="baz")
# output: # Derived.foo(a=1, b=2, args=(3, 'bar'), kwargs={'baz': 'baz'}) < /code> это хорошая или плохая практика? Он возвращает какую -то ручку. Специализированные реализации всегда должны быть в состоянии возвращать своего рода ручку по умолчанию, если метод вызывается без каких -либо дополнительных аргументов. Тем не менее, они могут определить определенные флаги, чтобы настроить ручку на случай использования вызывающего абонента. В этом случае вызывающий абонент также является тем, который создал создание специализированной реализации и знает об этих флагах. Общий код, работающий только на интерфейсе или ручках, не знает об этих флагах, но не нужно.from abc import ABC, abstractmethod
class Manager(ABC): @abstractmethod def connect(self, *args, **kwargs): raise NotImplementedError()
class DefaultManager(Manager): def connect(self, *, thread_safe: bool = False): if thread_safe: return ThreadSafeHandle() else: return DefaultHandle() [/code] Это специфично для моего варианта использования, что реализация Manager может захотеть выпустить различные реализации ручек, специфичные для использования абонента. Менеджеры определяются в одном месте в моем коде, и вызывающие абоненты могут иметь или не иметь специализированных потребностей, таких как безопасность потоков в примере, для менеджеров, которые они используют.
Справочная информация ниже вопроса. Я знаю, что это работает, но, как и многие вещи, работают во многих языках программирования, это может быть не хорошая практика. Так что это? from abc import ABC, abstractmethod
Справочная информация ниже вопроса. Я знаю, что это работает, но, как и многие вещи, работают во многих языках программирования, это может быть не хорошая практика. Так что это? from abc import ABC, abstractmethod
Хороша/плохая практика использовать статический метод в классе, который помечен аннотацией @comComponent в Spring Framework? В чем преимущество/недостаток его использования?
Я столкнулся с ошибкой JVM OutOfMemory в производственной среде....
Хороша/плохая практика использовать статический метод в классе, который помечен аннотацией @comComponent в Spring Framework? В чем преимущество/недостаток его использования?
Я столкнулся с ошибкой JVM OutOfMemory в производственной среде....
Я пытаюсь написать классы примерно так:
public abstract class BaseModel
{
public abstract BaseInstance CreateInstance();
}
public class SpecializedModel : BaseModel
{
public override BaseInstance CreateInstance()
{
return new...