继承是面向对象编程中的系统,它允许对象支持由前类型定义的操作,而无需提供自己的定义。它是面向对象编程中多态性的主要向量。
Perl 世界中存在任何具有模板继承的模板系统吗? 刚刚检查了维基百科 Comparison_of_web_template_engines (确实不完整的列表) - 这里没有列出任何内容。
输出: 狗类(): def get_class(): 返回__类__ 类猫(): def get_class(): 返回__类__ 打印(Dog.get_class()) 打印(Cat.get_class()) 是: 输出: class Dog(): def get_class(): return __class__ class Cat(): def get_class(): return __class__ print(Dog.get_class()) print(Cat.get_class()) 是: <class '__main__.Dog'> <class '__main__.Cat'> 我想用一个子类来干燥我的代码。但输出: class BaseClass(): def get_class(): return __class__ class Dog(BaseClass): pass class Cat(BaseClass): pass print(Dog.get_class()) print(Cat.get_class()) 是 <class '__main__.BaseClass'> <class '__main__.BaseClass'> 如何更改第二种情况中的代码以获得与第一种情况相同的输出? 你就快到了: class BaseClass: @classmethod def get_class(cls): return cls class Dog(BaseClass): pass class Cat(BaseClass): pass print(Dog.get_class()) print(Cat.get_class()) <class '__main__.Dog'> <class '__main__.Cat'> 这里有一些不同的问题。 我们正在实现的逻辑就是“获取类”。如果您想专门从类开始执行此操作,那么无需执行任何操作,也没有理由在 BaseClass 或 Dog 或 Cat 内实现任何内容来获得该结果 - 因为您 已经有了. class BaseClass: pass class Dog(BaseClass): pass class Cat(BaseClass): pass print(Dog) print(Cat) __class__是一个特殊的局部变量,用于实现super()。它命名了定义方法的类,无论该方法是如何查找的,或者即使它被用作普通函数: >>> class x: ... def example(self): ... print(__class__) ... >>> class y(x): pass ... >>> x().example() <class '__main__.x'> >>> y().example() <class '__main__.x'> >>> x.example(42) <class '__main__.x'> 通常,不希望接收类实例的方法应该用 @classmethod 或 @staticmethod 装饰。这样,代码仍然可以与类或实例一起使用。 规则是: @classmethod - 使用类调用,第一个参数是该类本身;用实例调用,第一个参数是实例的类。参数应该在开始时包含一个以接收该参数。按照惯例,我们将该参数称为 cls。@staticmethod - 使用类或实例调用,不为调用添加任何参数。参数应该只列出将显式传递的内容。无装饰器 - 用类调用,不添加参数;使用实例调用时,会添加该实例。 这应该仅用于实例,因此应该有一个参数来接收实例参数。按照惯例,我们将该参数称为 self。尝试在没有装饰器或self的类中使用函数违反了标准期望。它尝试将类视为简单的名称空间。这不是他们的目的,即使认为它有点有效。 假设我们希望代码可以使用一个类(返回该类)或一个实例(返回该实例的类),则代码很简单:一个 @classmethod 修饰的方法已经接收了一个参数,该参数是在任何情况下,这正是我们想要的,因此我们只需返回即可。因此: class BaseClass: @classmethod def get_class(cls): return cls class Dog(BaseClass): pass class Cat(BaseClass): pass print(Dog.get_class()) print(Dog().get_class()) print(Cat.get_class()) print(Cat().get_class())
我正在尝试学习如何在 WinUI 3(来自 WindowsAppSDK 1.1.1)中最有效地使用样式,但我很难让简单的继承发挥作用。 考虑 NavigationViewItem 类。我……
在 Angular 6 中,我想从 URL 检索 JWT 令牌,将其转换为 Base 64 并将其推送到其他一些链接。 我这样做了: 应用程序路由.module.ts: { 路径:'admin/:token',redirectTo:'广告...
编辑:我对示例进行了一些更改以获取想法: 喜欢 ...无需创建通用接口并为 Integer 和 Float 创建子类来实现...
我对 Unity 相当陌生,但我遇到了 Button 函数继承的问题。我有一个 UI 对象,其中包含 game_controller 脚本和三个按钮作为子对象。当我尝试添加
我正在创建一个自定义异常来解析特定的文件格式。基类是 FileFormatException (我已将文件格式的名称替换为 FileFormat)。它有一个 public 构造函数
假设我有一个基类 向量类 { 民众: 向量(const std::向量 &elements); 静态向量 add(const Vector &v1, const Vector &v2); 矢量矢量::
`var a = new B(); a = 新 B(); a = new C();` 不应该工作...已解决
抱歉,我的标题诱饵,但这是我的情况; 我正在使用这本书《彻底攻略Java SE 11 Silver问题集》进行学习,这是日本初学者Java工程师的流行教科书,...
为什么Spring在自动装配时自动选择超类类型? 例如,如果我有 @成分 公共类 Foo {} @成分 公共类 Bar 扩展 Foo {} 和有人自动...
我有一个 C++ 基类和一个派生类,我使用 pybind11 为其创建 Python 绑定。基类实现了一个函数(__repr__),我想在其中访问 self 的运行时类型名称。哈...
如果类在单独的文件中定义,java多重继承(有点)可以工作吗?
抱歉,我的标题诱饵,但这是我的情况; 我正在使用这本书《彻底攻略Java SE 11 Silver问题集》进行学习,这是日本初学者Java工程师的流行教科书,...
我创建了一个词法分析器等。我创建了一个名为 Error 的自定义调用,以及一个从 Error 类 inehriting 的 LexerErr 类。 Error 类在其构造函数中接受许多变量,其中之一是
我创建了名为ucn 的用户控件,并使用填充用户控件的datagridview。 在我创建了另一个从ucn继承的用户控件之后: 公共分部类 ucnRequest : ucn { 并在
我正在为一个大型 C++ 软件项目贡献一些片段。这是我遇到的一个问题。 我们已经在存储库中了 (1) A.h A 类:公共 X、公共 Y、公共 Z { ... } (2)...
DraggableComponent.gd:13 @drag(): 参数“get_viewport()”为空
我正在尝试使用构图开发 Godot 中的拾取和放下机制。到目前为止我只使用了继承,所以我不确定我做得是否正确。另外,我是戈多的新手。 当我玩
我正在制作一个C++程序来存储员工的数据,如姓名、ID、销售额、佣金金额并计算收入(销售额*佣金)。我正在使用继承的概念。我的基类是“Em...
我有以下问题。我想创建一个具有可变类型属性的基类,该属性由基类和从其继承的类在内部使用,如下所示: 公共抽象类
我有一个父类,我想“强制”将从它继承的每个人实现一些特定的类属性。 我的方法没有这个问题,因为我创建了一个...
我有一个基本记录类型和一个继承的记录类型,它添加了一些字段。 在运行时,我有一个基本记录类型的实例,并希望将其转换为继承记录类型的实例...