8

它是什么以及如何在 C# 中使用它。
你能在 Python/Perl 中使用相同的概念吗?

4

8 回答 8

19

部分类型(它不必是类;结构和接口也可以是部分的)基本上是一种单一类型,其代码分布在多个文件中。

这样做的主要用途是允许代码生成器(例如 Visual Studio 设计者)“拥有”一个文件,而将手写代码放在另一个文件中。

恐怕我不知道 Python/Perl 是否具有相同的功能。

于 2008-11-17T14:26:55.907 回答
9

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()
于 2008-11-17T14:58:09.713 回答
6

部分类只是一个包含在多个文件中的类。有时它的一部分是机器生成的,而另一部分是用户编辑的。

当我创建一个有点太大的类时,我在 C# 中使用它们。我将把访问器和构造器放在一个文件中,所有有趣的方法放在另一个文件中。

在 Perl 中,您只需拥有两个(或更多)文件,每个文件都声明自己在一个包中:

(主程序)

    use MyClass;

(在 MyClass.pm 中)

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

(在 MyClassOtherStuff.pm 中)

    package MyClass;
    # [...rest of code here...]
于 2008-11-17T14:50:12.567 回答
2

部分类型的概念已经解释过了。

这可以在 python 中完成。例如,在 python shell 中执行以下操作。

class A(object):
    pass

obj = A()

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

obj.identify()
于 2008-11-17T14:42:02.880 回答
1

因为 python 是一种动态语言,所以你不需要像偏类这样的概念。在 python 中,可以在运行时扩展具有功能的对象,因此可以将类声明分解为不同的文件

于 2008-11-17T14:39:54.553 回答
0

Partial 类型是其声明在多个文件中分隔的类型。如果您有一个大类(对于典型的开发人员来说很难处理和阅读),那么使用它们是有意义的,将类定义分隔在单独的文件中,并在每个文件中放入逻辑上分隔的代码部分(例如所有公共方法和属性在一个文件中,私有在另一个文件中,db 处理代码在第三个文件中,依此类推..)

不,您在 Python 中没有相同的语法元素。

于 2008-11-17T14:51:13.970 回答
0

Python 也有元类,但它更像是一个模板类而不是部分类。使用元类的一个很好的例子是 Django ORM。您的所有表模型都继承自一个基模型类,该基模型类也从元类中获取功能。这是一个非常酷的概念,可以启用像模式这样的活动记录(它是完整的活动记录吗?)。

于 2008-11-17T20:32:03.813 回答
0

auto-generated code当您使用某些工具时,部分课程会派上用场。请参阅问题Project structure for Schema First Service Development using WCF作为示例。

您可以将逻辑放在部分类中。即使自动生成的文件被销毁并重新创建,您的逻辑也会保留在部分类中。

于 2013-03-19T02:59:06.053 回答