相关疑难解决方法(0)

受保护和私有有什么区别?

可能重复:
私有和受保护的成员:C++

我不明白受保护成员或私有成员或方法之间的区别,因为我认为它们都会隐藏成员或从类外部访问的函数.

protected和private关键字有什么区别?

c++ oop private class protected

34
推荐指数
5
解决办法
8万
查看次数

访问继承中的私有成员

我有一个A类,它有一个声明为私有的字段val.我想声明一个B类,它继承自A并具有对val的访问权限.有没有办法在C++上做到这一点?

我想这样做是因为我需要重载A的一些函数,而根本不需要更改A代码.

谢谢.

c++ inheritance private

26
推荐指数
4
解决办法
6万
查看次数

Python避免子类中实现方法名称冲突

在 python 中创建子类时,如何确保我的子类实现方法不会无意中覆盖超类中的实现方法?我试图避免:

class A:
    def a(self):
        self._helper_func()

    def _helper_func(self):
        # do something specific to A

class B(A):
    def b(self):
        self._helper_func()

    def _helper_func(self):
        # do something; didn't realize this would mess up a()
Run Code Online (Sandbox Code Playgroud)

我认为唯一的选择是:(1)阅读超类的源代码,以确保我选择一个唯一的子类方法名称(当超类更新时,这可能会中断);或者(2)在子类中的所有实现方法上使用 __ (通常 __ 被描述为超类防止子类化的一种方式;但我认为这将有助于子类避免破坏超类)。

我在这里错过了什么吗?

更新 @sobolevn 基本上回答了我的问题。澄清一下:我所看到的关于名称修改的所有讨论都围绕超类试图隐藏/防止其方法被调用/覆盖(并且通常有评论说这不是 python 方式,用户应该尊重一个前导 _)。我担心子类化一个我没有编写的类(并且它本身没有使用名称修饰)以及为实现方法选择名称的非常​​不同的问题,这可能会无意中破坏超类(或其子类)中的代码父母)如果该名字已被使用。

根据我所读到的内容,在我看来,(a)编写我自己没有编写的类的子类的最佳实践是在所有私有方法前面加上 __ 前缀;但是(b)考虑到所有方法在Python中都是虚拟的,并且我经常希望我的子类公开一些新的公共/受保护的方法,除了充分了解所有类使用的所有非破坏方法名称之外,没有什么好的选择我继承了,并且这种意识将消除担心(a)的要求。

python inheritance

3
推荐指数
1
解决办法
2180
查看次数

Django,Python继承:从超类中排除一些字段

我在Employee和Manager类之间有继承.员工 - 超类,经理 - 子类.

class Employee(models.Model):
    ###
    name = models.CharField(max_length=50, null=False)
    address = models.CharField(max_length=50, null=False)
    ###

class Manager(Employee):
    department = models.CharField(max_length=50)
    ###
    here I don't want the 'name' and 'address' fields of Employee class.
    (I want other fields of Employee and department field of this class to be stored in 
    Manager table in database)
    ###
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一点.提前致谢.

python django inheritance

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

dunder方法是继承的吗?

如果我定义__getstate__()__setstate__()在父类中,孩子是否能够继承这些方法?在这个SO答案中有一些相关的讨论,但仅限于具有前面的双下划线(dunder)的方法.

一些额外的信息:

  • 我这样做是为了定义我的类的序列化(酸洗)行为.
  • Python 2.7

python inheritance

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

标签 统计

inheritance ×4

python ×3

c++ ×2

private ×2

class ×1

django ×1

oop ×1

protected ×1