相关疑难解决方法(0)

何时以及如何在python中使用内置函数property()

在我看来,除了一点点语法糖,property()没有任何好处.

当然,这是好的能够写a.b=2的不是a.setB(2),但隐瞒事实,即AB = 2不是一个简单的任务看起来像麻烦的前提,要么是因为一些意想不到的结果都可能发生,如a.b=2实际上导致a.b1.或者引发异常.或者性能问题.或者只是让人困惑.

你能给我一个具体的例子来好好利用它吗?(使用它修补有问题的代码不计算;-)

python properties

68
推荐指数
4
解决办法
3万
查看次数

访问父级的受保护变量

我想不出标题的更好的措辞,所以它有点误导,但是,我不是在谈论一个孩子访问从其父级继承的变量,这很容易.

我所说的是这个:

class Parent {
  protected:
     Parent *target;
     int hp;
}

class Child : public Parent {
  public:
     void my_func();
}

void Child::my_func() {
    target->hp -= 50;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试编译它,它会抱怨'hp'在这种情况下是"私有的".问题是孩子没有试图访问自己的父变量,而是其他一些类',这可能是也可能不是Child本身.

一个对象可以访问同一个类的另一个对象(内存中的两个独立实例)的所有变量和方法(公共的,受保护的或私有的),所以我认为它也适用于它,因为它继承自它试图访问的变量类,但似乎我认为这是错误的.

有小费吗?

PS不要粗鲁或任何东西,但我知道我可以创建get()和set()方法,但我希望有一个更清洁的方式.

c++

21
推荐指数
2
解决办法
3万
查看次数

公共领域有哪些替代方案?

我正在使用java编写游戏,并且作为问题标题建议我在我的课程中使用公共字段.(暂且)

从我所看到的公共领域是坏的,我有一些理解为什么.(但如果有人可以澄清你为什么不使用它们,那将不胜感激)

事情是,从我所看到的,(并且似乎合乎逻辑)是使用私有字段,但使用getter和setter来访问它们也不好,因为它首先破坏了使用私有字段的观点.

所以,我的问题是,有哪些替代方案?或者我真的必须使用私人领域与吸气剂和制定者?

这里是我的一个类及其一些方法的参考.

如果需要,我会详细说明.

public double health;
//The player's fields.
public String name;
public double goldCount;
public double maxWeight;
public double currentWeight;
public double maxBackPckSlts;
public double usedBackPckSlts; // The current back pack slots in use
public double maxHealth; // Maximum amount of health
public ArrayList<String> backPack = new ArrayList<String>();

//This method happens when ever the player dynamically takes damage(i.e. when it is not scripted for the player to take damage.
//Parameters will be added to make it …
Run Code Online (Sandbox Code Playgroud)

c++ java field class public

13
推荐指数
3
解决办法
1400
查看次数

python:强制只从另一个类方法中调用类方法?

我有一个有两个方法A和B的类.该类将被子类化.是否有一种优雅的方式来强制执行B()只在A()方法中调用类的对象?

让我们约束它并说A()只在一个地方调用,但是子类实现A()并且可以选择在其中调用B().我想到这样做的一种方法是用一个全局变量来包装A()调用,该变量表示可以调用B(),而B()会在调用它时检查这个变量.这似乎并不优雅.

有什么建议?

python

0
推荐指数
1
解决办法
555
查看次数

标签 统计

c++ ×2

python ×2

class ×1

field ×1

java ×1

properties ×1

public ×1