Если вы откроете файл .class любого из ваших классов, вы сможете увидеть детали пакета внутри него. В вашем случае, если вы откроете MyClassA.class
в текстовом редакторе, то вы увидите что-то вроде abc/xyz/MyClassA
. JVM будет использовать его как abc.xyz.MyClassA
. По этой причине, если нам нужно использовать этот класс в каком-то другом классе, нам нужно использовать его как import abc.xyz.MyClassA
.
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()
Частичный тип (это не должен быть класс; структуры и интерфейсы могут быть неравнодушными также), в основном единственный тип, которому распространяли его код через несколько файлов.
Основное использование для этого должно позволить генератору кода (например, разработчик Visual Studio) "владеть" одним файлом, в то время как рукописный код помещается в другого.
Я понятия не имею, имеет ли Python/Perl те же возможности, я боюсь.
Частичный класс является просто классом, это содержится больше чем в одном файле. Иногда это - так, чтобы одна часть могла быть сгенерирована машиной, и другая отредактированная пользователями часть.
Я использую их в C#, когда я делаю класс, это становится немного слишком большим. Я помещу средства доступа и конструкторов в одном файле и все интересные методы в другом файле.
В Perl Вы просто имели бы два (или больше) файлы, что каждый объявляет себя быть в пакете:
(основная программа)
use MyClass;
(в MyClass.pm)
use MyClassOtherStuff;
package MyClass;
# [..class code here...]
(в MyClassOtherStuff.pm)
package MyClass;
# [...rest of code here...]
Понятие частичных типов было уже объяснено.
Это может быть сделано в Python. Как пример, сделайте следующее в оболочке Python.
class A(object):
pass
obj = A()
def _some_method(self):
print self.__class__
A.identify = _some_method
obj.identify()
Поскольку Python является динамическим языком, Вам не нужно понятие как частичный класс. В Python возможно расширить объект с помощью функциональности во времени выполнения так это возможный повредить объявление класса в различные файлы
Частичный тип является типом, объявление которого разделяется через несколько файлов. Имеет смысл использовать их, если у Вас есть большой класс, с которым трудно управиться, и читайте для типичного разработчика, чтобы разделить то определение класса в отдельных файлах и вставить каждый файл логически разделенный раздел кода (например, все открытые методы и правила приличия в одном файле, частном в другом, коде обработки дб в трети и так далее..)
Нет у Вас нет того же синтаксического элемента в Python.
Python также имеет метаклассы, но это больше похоже на шаблонный класс, чем частичный класс. Хорошим примером использования метакласса является Django ORM. Все Ваши модели таблицы наследовались классу базовой модели, который также включал функциональность от метакласса. Это - довольно прохладное понятие, которое включает активную запись как шаблон (это полная активная запись?).