什么是部分课程?

时间:2008-11-17 14:24:33

标签: c# python oop programming-languages

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

8 个答案:

答案 0 :(得分:19)

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

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

我不知道Python / Perl是否具有相同的功能,我担心。

答案 1 :(得分:9)

这里已经解释了c#partial类,所以我将只介绍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()

答案 2 :(得分:6)

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

我在C#中使用它们时,我正在制作一个有点太大的课程。我将把访问器和构造函数放在一个文件中,将所有有趣的方法放在不同的文件中。

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

(主程序)

    use MyClass;

(在MyClass.pm中)

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

(在MyClassOtherStuff.pm中)

    package MyClass;
    # [...rest of code here...]

答案 3 :(得分:2)

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

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

class A(object):
    pass

obj = A()

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

obj.identify()

答案 4 :(得分:1)

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

答案 5 :(得分:0)

部分类型是一种类型,其声明在多个文件之间分开。如果你有一个很大的类(对于一个典型的开发人员来说很难处理和读取),在单独的文件中分离该类定义并在每个文件中放入一个逻辑上分开的代码段(例如所有公共文件),那么使用它们是有意义的。一个文件中的方法和属性,其他的私有,第三个数据库处理代码等等。)

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

当你通过某种工具获得auto-generated code时,部分类很方便。请参阅问题Project structure for Schema First Service Development using WCF以获取示例。

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