![]() |
1
65
我只是想重复一下
虽然这看起来很冗长,但至少对于Python标准来说,你可能会注意到:
1) 对于只读属性,
2) 在Python 2.6中,
properties grew a pair of methods
|
![]() |
2
11
我不同意所选答案是允许覆盖属性方法的理想方式。如果你希望getter和setter被重写,那么你可以使用lambda来提供对self的访问,类似于
这至少适用于Python 2.4至3.6版本。 如果有人知道如何使用property作为装饰器而不是直接的property()调用来实现这一点,我很想听听! 例子:
这样,可以很容易地执行覆盖:
以便:
我发现这个 geek at play . |
![]() |
3
11
另一种方法是,不必创建任何额外的类。我添加了一个set方法来显示如果你只覆盖其中一个,你会怎么做:
这是一个相当做作的例子,但你应该明白。 |
![]() |
4
7
是的,这就是方法;属性声明在父类定义执行时执行,这意味着它只能“看到”父类上存在的方法的版本。因此,当你在子类上重新定义一个或多个方法时,你需要使用子类版本的方法重新声明属性。 |
![]() |
5
2
一个可能的解决方法可能如下:
它打印
这个想法来自David Beazley的《Python Cookbook》;布莱恩·K·琼斯。 在Debian GNU/Linux 9.11上使用Python 3.5.3(扩展) |
![]() |
6
2
这样的方法会奏效
|
![]() |
7
2
与…一致 @mr-b 只有装饰师。
这样,可以很容易地执行覆盖:
|
![]() |
8
0
我在从子类设置父类中的属性时遇到了问题。以下工作组扩展了父级的属性,但是通过直接调用父级的_set_age方法来实现的。皱纹应该总是正确的。不过,这有点javathonic。
|
![]() |
MWRazer · 在类-C上具有作为属性的函数++ 1 年前 |
![]() |
Vopel · 添加隐藏的属性,除非该属性具有值 1 年前 |
![]() |
Shane Amare · 构造函数和对象构造之间的区别是什么? 2 年前 |