最佳猜测:
- 方法def(self,maybeSomeVariables);实现某种目的的代码行
- 函数-与方法相同,但返回
- 类-方法/函数组
- 模块-一个脚本,或一个或多个类。基本上是一个.py文件。在
- Package—一个包含模块的文件夹,其中还包含一个u init_uu.py文件。在
- 套房-只是一个词,经常被抛出,按惯例
- TestCase-unittest的函数等价物
- TestSuite-unittest的等价类(或模块?)在
我的问题是:这是完全正确的吗?我是否遗漏了列表中的任何层次结构块?在
Tags:
我觉得你把根本不存在的差异放进去了。实际上并没有等级制度。在python中,所有的东西都是一个对象。这不是什么抽象的概念,但对于在使用python时如何考虑所创建的构造来说,这是非常基本的。一个对象就是一堆其他对象。是否使用new-style classes有一点微妙之处,但是如果没有一个好的理由,那么就使用并假设新样式的类。下面的所有内容都假设是新样式的类。在
如果一个对象是callable,则可以使用一对大括号的调用语法调用它,其中的参数是:
my_callable(arg1, arg2)
。为了可调用,对象需要实现__call__
方法(或者在其C级类型定义中设置正确的字段)。在在python中,一个对象有一个关联的
type
。类型描述如何构造对象。因此,例如,列表对象的类型是list
,而函数对象的类型是function
。类型本身属于type
类型。您可以使用内置函数type()
来查找类型。所有内置类型的列表可以在pythondocumentation中找到。类型实际上是可调用的对象,用于创建给定类型的实例。在好了,现在已经确定了,给定对象的性质是由它的类型定义的。它描述了它所包含的对象。回到你的问题上来:
首先,组成某个对象的一组对象称为该对象的属性。这些属性可以是任何东西,但它们通常由方法和某种存储状态的方式(可能是})组成。在
int
或{function是
function
类型的对象。关键的是,这意味着它将__call__
方法作为一个属性,使其成为可调用的(__call__
方法也是一个本身具有__call__
方法的对象。它是__call__
一直向下;)在python世界中,class可以被视为一个类型,但通常用于引用不是内置的类型。这些对象用于创建其他对象。您可以用class关键字定义自己的类,要创建一个新样式的类,您必须从
object
(或其他一些新样式的类)继承。继承时,创建一个获取父类型的所有特征的类型,然后可以覆盖所需的位(并且可以覆盖所需的任何位)。当你通过调用一个类来创建一个对象时,它通常会被另一个类所创建。在method是使用属性表示法调用的特殊类型的函数。也就是说,当它被创建时,2个额外的属性被添加到方法中(记住它是一个对象!)称为
im_self
和im_func
。im_self
我将用几句话来描述。im_func
是一个实现该方法的函数。当方法被调用时,例如,foo.my_method(10)
,这相当于调用foo.my_method.im_func(im_self, 10)
。这就是为什么当你定义一个方法时,你用一个你似乎没有使用的额外的第一个参数来定义它(如self
)。在当您在定义一个类时编写一组方法时,这些方法就变成了未绑定的方法。当您创建该类的实例时,这些方法将成为绑定的。{16>当你在绑定方法中添加一个参数时,{16>作为绑定方法存在。仍然可以调用类的unbound方法,但需要显式添加类实例作为第一个参数:
我们可以展示当我们调用bar方法的各种表现形式时会发生什么:
^{pr2}$综合以上所有因素,我们可以定义一个类,如下所示:
^{3}$这将生成一个具有2个属性的类:
a
(即值为10)和bar
的整数,这是一个未绑定的方法。我们可以看到MyFoo.a
只有10。在我们可以在运行时创建额外的属性,包括类方法内部和外部。考虑以下因素:
__init__
只是从类创建对象后立即调用的方法。在这个例子展示了在运行时(即从类创建对象之后)向类实例添加属性的两种方法。在
我希望你能看到,TestCase和TestSuite只是用来创建测试对象的类。它们没有什么特别之处,只是它们碰巧有一些有用的特性来编写测试。你可以子类化和重写它们到你的心的内容!在
关于您的特定点,方法和函数都可以返回它们想要的任何内容。在
你对模块、软件包和套件的描述似乎很合理。注意模块也是对象!在
相关问题 更多 >
编程相关推荐