概述
我是python的新手,我不确定我在做什么是正确的.
我有一个基类A和一个继承的类B.
class A(object):
def __init__(self,name):
self.__name = name
@property
def name(self):
return self.__name
@name.setter
def name(self,name):
self.__name = name
class B(A):
def __init__(self,name):
super(NominalValue,self).__init__(name)
@property
def name2(self):
return self.__name2
@name2.setter
def name2(self,n):
self.__name2 = n
def toString():
print self.__name + self.__name2
if __name__ == "__main__":
instance = B('name');
instance.toString()
当我运行它时,它抱怨B类没有任何属性__name.
AttributeError: 'B' object has no attribute '_B__name'
我显然没有正确地进行继承.如何处理要正确继承的属性并避免在继承的类中重复属性?
Any identifier of the form __spam
(at least two leading underscores,at most one trailing underscore) is textually replaced with _classname__spam
,where classname
is the current class name with leading underscore(s) stripped.
因此,即使您继承了A的__name属性,在类型B的任何对象中也没有属性__name.您拥有的是_A__name属性.这就是名称修改的工作原理:__ attributename变为_classname__attributename
您可以使用_name代替,这只是未来用户的标志,这不应该是公开的.然后你的整个代码应该工作.
总结
以上是编程之家为你收集整理的Python属性继承全部内容,希望文章能够帮你解决Python属性继承所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧