inheritance 相关问题

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

.NET Maui - 中性属性绑定的选项

在 .NET Maui 中,我有这个 XAML: <Setter Property="TextColor" Value="Green"/>...</desc> <question vote="0"> <p>在 .NET Maui 中,我有这个 XAML:</p> <pre><code> &lt;Style x:Key=&#34;GreenLabelStyle&#34; TargetType=&#34;Label&#34;&gt; &lt;Setter Property=&#34;TextColor&#34; Value=&#34;Green&#34;/&gt; &lt;/Style&gt; &lt;Label Style=&#34;{StaticResource GreenLabelStyle}&#34; Text=&#34;Some text&#34; TextColor=&#34;{Binding SometimesOverrideColor}&#34; /&gt; &lt;CheckBox IsChecked=&#34;{Binding OverrideColorStyle}&#34;/&gt; </code></pre> <p>Label 的 TextColor 绑定到此属性:</p> <pre><code> public Color SometimesOverrideColor { get { return OverrideColorStyle ? Colors.Pink : Colors.Green; // works, but not DRY } } </code></pre> <p>即使我有一个指定的(绑定)<pre><code>TextColor</code></pre>,我希望该选项说“忽略此属性设置并表现得好像标签上没有明确的 TextColor”。我尝试将 <pre><code>null</code></pre> 换成 <pre><code>SometimesOverrideColor</code></pre>,但这没有用。我想使用标签样式的值(即绿色)。</p> <p>显然,我可以在 <pre><code>Colors.Green</code></pre> 中返回 <pre><code>SometimesOverrideColor</code></pre>,但这会重复样式中指定的值。如果我改变了样式,我必须记住更新属性。</p> <p>我的想法就像 CSS 中的 <pre><code>inherit</code></pre> 关键字。如果我能回来<pre><code>Color.Inherit</code></pre>那就太好了!</p> </question> <answer tick="false" vote="0"> <p>根据我对你问题的理解,我会为此做一些事情</p> <pre><code> &lt;Style TargetType=&#34;Label&#34;&gt; &lt;Setter Property=&#34;TextColor&#34; Value=&#34;Black&#34; /&gt; &lt;Setter Property=&#34;FontFamily&#34; Value=&#34;OpenSansRegular&#34; /&gt; &lt;Setter Property=&#34;FontSize&#34; Value=&#34;14&#34; /&gt; &lt;/Style&gt; &lt;Style x:Key=&#34;SometimesOverrideColor&#34; TargetType=&#34;Label&#34;&gt; &lt;Setter Property=&#34;TextColor&#34; Value=&#34;Pink&#34; /&gt; &lt;/Style&gt; &lt;Style x:Key=&#34;GreenLabelStyle&#34; TargetType=&#34;Label&#34;&gt; &lt;Setter Property=&#34;TextColor&#34; Value=&#34;Green&#34; /&gt; &lt;/Style&gt; </code></pre> <p>然后编写一个简短的转换器,有条件地应用此:</p> <pre><code> //Name this sensibly public abstract class WhateverColorConveter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is not bool condition) { return null; // in case someone uses the converter but is a smartass } return Application.Current.Resources.GetResource&lt;Style&gt;(condition ? &#34;SometimesOverrideColor&#34; : &#34;GreenLabelStyle&#34;); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } </code></pre> <p>然后这将与您的 XAML 代码样式一起使用,不要忘记将其作为静态资源添加到您的资源中:</p> <pre><code> &lt;ContentPage.Resources&gt; &lt;converters:WhateverColorConveter x:Key=&#34;WhateverColorConverter&#34; /&gt; &lt;/ContentPage.Resources&gt; </code></pre> <p>然后使用这个:</p> <pre><code>&lt;Label Style={Binding Condition, Converter={StaticResource WhateverColorConverter}}/&gt; </code></pre> </answer> </body></html>

回答 0 投票 0

错误:静态断言失败:模板参数必须是完整的类或无界数组

我派生自一个基类,我尝试在其中定义一个类型。该类型通过变体依赖于自身,因此需要在定义时了解基类的内存布局。豪...

回答 1 投票 0

将变量传递给具有多重继承的构造函数

我在通过我的类(ID 和 Name)传递两条数据时遇到问题。我知道如果不经过前面的步骤就无法调用基类构造函数...

回答 1 投票 0

带有继承的 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

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