inheritance 相关问题

继承是面向对象编程中的系统,它允许对象支持由前类型定义的操作,而无需提供自己的定义。它是面向对象编程中多态性的主要向量。

带有继承的 Perl 模板

Perl 世界中存在任何具有模板继承的模板系统吗? 刚刚检查了维基百科 Comparison_of_web_template_engines (确实不完整的列表) - 这里没有列出任何内容。

回答 5 投票 0

Python 在父类静态/类方法中获取子类

输出: 狗类(): 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())

回答 2 投票 0

如何继承或覆盖 WinUI 3 控件的默认样式的元素?

我正在尝试学习如何在 WinUI 3(来自 WindowsAppSDK 1.1.1)中最有效地使用样式,但我很难让简单的继承发挥作用。 考虑 NavigationViewItem 类。我……

回答 2 投票 0

使用令牌生成链接

在 Angular 6 中,我想从 URL 检索 JWT 令牌,将其转换为 Base 64 并将其推送到其他一些链接。 我这样做了: 应用程序路由.module.ts: { 路径:'admin/:token',redirectTo:'广告...

回答 1 投票 0

有没有办法在Java泛型中模仿OR

编辑:我对示例进行了一些更改以获取想法: 喜欢 ...无需创建通用接口并为 Integer 和 Float 创建子类来实现...

回答 4 投票 0

Unity On Click() 按钮界面不显示功能

我对 Unity 相当陌生,但我遇到了 Button 函数继承的问题。我有一个 UI 对象,其中包含 game_controller 脚本和三个按钮作为子对象。当我尝试添加

回答 1 投票 0

调用super之前需要设置属性

我正在创建一个自定义异常来解析特定的文件格式。基类是 FileFormatException (我已将文件格式的名称替换为 FileFormat)。它有一个 public 构造函数

回答 1 投票 0

在继承类中使用基类定义的运算符

假设我有一个基类 向量类 { 民众: 向量(const std::向量 &elements); 静态向量 add(const Vector &v1, const Vector &v2); 矢量矢量::

回答 1 投票 0

`var a = new B(); a = 新 B(); a = new C();` 不应该工作...已解决

抱歉,我的标题诱饵,但这是我的情况; 我正在使用这本书《彻底攻略Java SE 11 Silver问题集》进行学习,这是日本初学者Java工程师的流行教科书,...

回答 1 投票 0

自动装配 Spring 超类

为什么Spring在自动装配时自动选择超类类型? 例如,如果我有 @成分 公共类 Foo {} @成分 公共类 Bar 扩展 Foo {} 和有人自动...

回答 4 投票 0

如何使用 pybind11 在运行时访问派生类型?

我有一个 C++ 基类和一个派生类,我使用 pybind11 为其创建 Python 绑定。基类实现了一个函数(__repr__),我想在其中访问 self 的运行时类型名称。哈...

回答 1 投票 0

如果类在单独的文件中定义,java多重继承(有点)可以工作吗?

抱歉,我的标题诱饵,但这是我的情况; 我正在使用这本书《彻底攻略Java SE 11 Silver问题集》进行学习,这是日本初学者Java工程师的流行教科书,...

回答 1 投票 0

在 TypeScript 中继承时无法重新分配类变量

我创建了一个词法分析器等。我创建了一个名为 Error 的自定义调用,以及一个从 Error 类 inehriting 的 LexerErr 类。 Error 类在其构造函数中接受许多变量,其中之一是

回答 1 投票 0

C# Winforms 用对象继承用户控件并修改

我创建了名为ucn 的用户控件,并使用填充用户控件的datagridview。 在我创建了另一个从ucn继承的用户控件之后: 公共分部类 ucnRequest : ucn { 并在

回答 2 投票 0

打破钻石继承问题的一条腿:替代方案?

我正在为一个大型 C++ 软件项目贡献一些片段。这是我遇到的一个问题。 我们已经在存储库中了 (1) A.h A 类:公共 X、公共 Y、公共 Z { ... } (2)...

回答 1 投票 0

DraggableComponent.gd:13 @drag(): 参数“get_viewport()”为空

我正在尝试使用构图开发 Godot 中的拾取和放下机制。到目前为止我只使用了继承,所以我不确定我做得是否正确。另外,我是戈多的新手。 当我玩

回答 1 投票 0

派生类在访问基类的私有变量时出错

我正在制作一个C++程序来存储员工的数据,如姓名、ID、销售额、佣金金额并计算收入(销售额*佣金)。我正在使用继承的概念。我的基类是“Em...

回答 1 投票 0

将模板化基类通用子级传递给函数,不受模板类型限制

我有以下问题。我想创建一个具有可变类型属性的基类,该属性由基类和从其继承的类在内部使用,如下所示: 公共抽象类

回答 1 投票 0

强制在子类python中实现特定属性

我有一个父类,我想“强制”将从它继承的每个人实现一些特定的类属性。 我的方法没有这个问题,因为我创建了一个...

回答 3 投票 0

C# 初始化继承的记录形式基础记录

我有一个基本记录类型和一个继承的记录类型,它添加了一些字段。 在运行时,我有一个基本记录类型的实例,并希望将其转换为继承记录类型的实例...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.