GVKun编程网logo

Python:术语“类” VS“类型”(python类中类)

20

如果您对Python:术语“类”VS“类型”和python类中类感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Python:术语“类”VS“类型”的各种细节,并对python类中类进行深入的分

如果您对Python:术语“类” VS“类型”python类中类感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解Python:术语“类” VS“类型”的各种细节,并对python类中类进行深入的分析,此外还有关于Azure 函数 python VSCode Debug 术语“-Command”未被识别为 cmdlet 的名称、C – 关于包含“类型”成员的联合的问题、Delphi中一个和多个“类型”块之间的区别、Delphi中的“类型”声明代表什么,它如何被使用的实用技巧。

本文目录一览:

Python:术语“类” VS“类型”(python类中类)

Python:术语“类” VS“类型”(python类中类)

只是一个简单的问题:在Python中何时应使用术语“类”,何时应使用术语“类型”?

  • “ class”仅用于用户定义的类型,“ type”是否用于内置类型?
  • 还是现在一切都是类型…即使对于用户定义的类,我也应该始终使用“类型”吗?
  • …?

Azure 函数 python VSCode Debug 术语“-Command”未被识别为 cmdlet 的名称

Azure 函数 python VSCode Debug 术语“-Command”未被识别为 cmdlet 的名称

请确保您已安装 virtualenv,然后您可以调试您的函数应用。

您可以关注以下文章。

Installing packages using pip and virtual environments

C – 关于包含“类型”成员的联合的问题

C – 关于包含“类型”成员的联合的问题

关于工会我仍然不了解的问题.我已经阅读了很多他们的用途,并且大部分都可以看到它们如何有用并理解它们.我已经看到他们可以提供原始的“C风格”多态性.我在几个网站上看到的这个例子是SDL的事件联盟:
typedef union {
Uint8 type;
SDL_ActiveEvent active;
SDL_KeyboardEvent key;
SDL_MouseMotionEvent motion;
SDL_MouseButtonEvent button;
SDL_JoyAxisEvent jaxis;
SDL_JoyBallEvent jball;
SDL_JoyHatEvent jhat;
SDL_JoyButtonEvent jbutton;
    SDL_ResizeEvent resize;
SDL_ExposeEvent expose;
SDL_QuitEvent quit;
SDL_UserEvent user;
    SDL_SysWMEvent syswm;
} SDL_Event;

我无法理解的是,与那些事件类型共存的“类型”成员怎么样?这些不是每个只允许一次存在一个,因为它们占据相同的记忆区域吗?工会不会随时存在,无论是类型还是其中一个事件?

据我所知,每个事件实际上都是一个带有类型成员的结构,例如:

// SDL_MouseButtonEvent

typedef struct{
    Uint8 type;
    Uint8 button;
    Uint8 state;
    Uint16 x,y;
} SDL_MouseButtonEvent;

这怎么有意义?这是否以某种方式允许联合的类型成员表示联合当前的任何结构的类型?当一个联盟的每个成员除了一个结构并且每个结构包含那个成员时,会发生这种奇怪的效果吗?

你可以在不知道对象是哪个结构的情况下访问struct成员吗?

谢谢!

解决方法

如果每个事件类型都有一个Uint8作为其第一个数据成员,那么union的类型成员只是一个方便.

联合的一般规则是您只能使用您编写的最后一个数据成员访问联合中的数据.因此,如果您上次写入活动状态,则无法从密钥读取.

此规则的一个例外是,如果联合的多个成员共享相同的前缀(如果它们的第一个数据成员相同),则可以通过共享前缀的联合的任何数据成员访问该前缀.所以,在这里,你可以引用active.type或key.type,无论union的哪个数据成员是活动的,它都可以工作.

SDL_Event的类型成员只是一个方便的快捷方式,允许您访问该类型字段,而不必将其限定为event_object.active.type或event_object.key.type.你可以使用event_object.type.

Delphi中一个和多个“类型”块之间的区别

Delphi中一个和多个“类型”块之间的区别

我一直在为Delphi编程五六年,我认为自己相当擅长,但我最近偶然发现了一个我无法解释的行为.我正在编写一个简单的链表,我们称之为TIntegerList.下面的示例代码正确编译:
type
  PIntegerValue = ^TIntegerValue;

  TIntegerValue = record
    Value: Integer;
    Next: PIntegerValue;
    Prev: PIntegerValue;
  end;

但是,下面的代码没有(说TIntegerValue未声明):

type
  PIntegerValue = ^TIntegerValue;

type  
  TIntegerValue = record
    Value: Integer;
    Next: PIntegerValue;
    Prev: PIntegerValue;
  end;

Delphi中“type”关键字究竟是如何处理的?与在每个类型中使用一个“类型”相比,在一个“type”关键字下声明多个类型的语法含义是什么?好吧,这令人困惑,但我希望代码示例有助于解释我的意思.我在Delphi 2007工作.

解决方法

逻辑上,当代码已经是现有类型声明部分的一部分时,不需要使用type关键字.所以,
type
  TRec1 = record
  end;

  TRec2 = record
  end;

产生无法区分的类型

type
  TRec1 = record
  end;

type
  TRec2 = record
  end;

但是,正如您所发现的,编译器有一个限制,要求在引入前向声明的部分结束之前完全解析所有前向声明.

它没有特别的原因必须这样.编译器完全可以放宽该限制.人们只能假设很可能源于很久以前的编译器实现细节已经渗透到语言规范中.

Delphi中的“类型”声明代表什么,它如何被使用

Delphi中的“类型”声明代表什么,它如何被使用

在Datasnap.DSReflect单元中有一些奇怪的代码
TDSAdapterClasstype = type of TDSAdapterClass;

  TDSAdapterClass = class(TPersistent)
  private
    FAdapteeInstance: TObject;
  public
    constructor Create(AdapteeInstance: TObject); virtual;
  end;

然后就这样使用了

var
  AdapteeInstance: TObject;
  FClassRef: TPersistentClass;

  Result := TDSAdapterClasstype(FClassRef).Create(AdapteeInstance);

一见钟情似乎就像另一种声明类参考的方式。但是逻辑意味着在不增加更多功能的情况下引入语言结构的这种变化是没有意义的。根据逻辑,我发现以下声明编译:

type
  TypeOfInteger = type of Integer;
  TypeOfByte = type of Byte;

  TRec = record
    x: integer;
  end;
  TypeOfTRec = type of TRec;

  TBytes = array of byte;
  TypeOfTBytes = type of TBytes;

有趣的是,以下声明无法编译。

type
  TypeOfString = type of String;

所以问题是什么类型的实际代表,如何在现实生活中应用,除了某种类别的别名

注意:在Delphi 7中不编译的类型,它似乎是在后面介绍的,它在XE中是绝对的,但是我没有安装Delphi 2007-2010来尝试它。

更新:我已经填写错误报告https://quality.embarcadero.com/browse/RSP-9850

解决方法

没有记录行为是不可重复的。一些行为感觉像是类,但是我们不需要另外一种方式去做。值类型的类是荒谬的。

我的结论是这必须是一个编译器的bug。代码无效,应由编译器拒绝。错误是代码被接受而不被拒绝。

从Hallvard Vassbotn的article可以看出,Delphi .net编译器的一个功能是创建映射到.net的System.RuntimeTypeHandle类型的类型。因此,松散地说,提供与C#类型运算符相当的功能的类型。

我最好的猜测是,Delphi桌面编译器接受不应该的类型,作为.net编译器的遗迹。

今天关于Python:术语“类” VS“类型”python类中类的分享就到这里,希望大家有所收获,若想了解更多关于Azure 函数 python VSCode Debug 术语“-Command”未被识别为 cmdlet 的名称、C – 关于包含“类型”成员的联合的问题、Delphi中一个和多个“类型”块之间的区别、Delphi中的“类型”声明代表什么,它如何被使用等相关知识,可以在本站进行查询。

本文标签: