Что такое частичный класс?

Если вы откроете файл .class любого из ваших классов, вы сможете увидеть детали пакета внутри него. В вашем случае, если вы откроете MyClassA.class в текстовом редакторе, то вы увидите что-то вроде abc/xyz/MyClassA. JVM будет использовать его как abc.xyz.MyClassA. По этой причине, если нам нужно использовать этот класс в каком-то другом классе, нам нужно использовать его как import abc.xyz.MyClassA.

8
задан MariusCC 17 November 2008 в 14:24
поделиться

7 ответов

c# частичный класс был уже объяснен здесь, таким образом, я просто покрою часть Python. Можно использовать множественное наследование для изящного распределения определения класса.

class A_part1:
    def m1(self):
        print "m1"

class A_part2:
    def m2(self):
        print "m2"

class A(A_part1, A_part2):
    pass

a = A()
a.m1()
a.m2()
9
ответ дан 5 December 2019 в 04:58
поделиться

Частичный тип (это не должен быть класс; структуры и интерфейсы могут быть неравнодушными также), в основном единственный тип, которому распространяли его код через несколько файлов.

Основное использование для этого должно позволить генератору кода (например, разработчик Visual Studio) "владеть" одним файлом, в то время как рукописный код помещается в другого.

Я понятия не имею, имеет ли Python/Perl те же возможности, я боюсь.

19
ответ дан 5 December 2019 в 04:58
поделиться

Частичный класс является просто классом, это содержится больше чем в одном файле. Иногда это - так, чтобы одна часть могла быть сгенерирована машиной, и другая отредактированная пользователями часть.

Я использую их в C#, когда я делаю класс, это становится немного слишком большим. Я помещу средства доступа и конструкторов в одном файле и все интересные методы в другом файле.

В Perl Вы просто имели бы два (или больше) файлы, что каждый объявляет себя быть в пакете:

(основная программа)

    use MyClass;

(в MyClass.pm)

    use MyClassOtherStuff;
    package MyClass;
    # [..class code here...]

(в MyClassOtherStuff.pm)

    package MyClass;
    # [...rest of code here...]
6
ответ дан 5 December 2019 в 04:58
поделиться

Понятие частичных типов было уже объяснено.

Это может быть сделано в Python. Как пример, сделайте следующее в оболочке Python.

class A(object):
    pass

obj = A()

def _some_method(self):
    print self.__class__
A.identify = _some_method

obj.identify()
2
ответ дан 5 December 2019 в 04:58
поделиться

Поскольку Python является динамическим языком, Вам не нужно понятие как частичный класс. В Python возможно расширить объект с помощью функциональности во времени выполнения так это возможный повредить объявление класса в различные файлы

1
ответ дан 5 December 2019 в 04:58
поделиться

Частичный тип является типом, объявление которого разделяется через несколько файлов. Имеет смысл использовать их, если у Вас есть большой класс, с которым трудно управиться, и читайте для типичного разработчика, чтобы разделить то определение класса в отдельных файлах и вставить каждый файл логически разделенный раздел кода (например, все открытые методы и правила приличия в одном файле, частном в другом, коде обработки дб в трети и так далее..)

Нет у Вас нет того же синтаксического элемента в Python.

0
ответ дан 5 December 2019 в 04:58
поделиться

Python также имеет метаклассы, но это больше похоже на шаблонный класс, чем частичный класс. Хорошим примером использования метакласса является Django ORM. Все Ваши модели таблицы наследовались классу базовой модели, который также включал функциональность от метакласса. Это - довольно прохладное понятие, которое включает активную запись как шаблон (это полная активная запись?).

0
ответ дан 5 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: