PYTHON,实例用做属性问题

classUser():def__init__(self):print("111111")classall(User):defjdk(self):print("22222... class User():
def __init__(self):
print("111111")
class all(User):
def jdk(self):
print("2222222")
self.dys = diaoyong();
class diaoyong():
def ses(self):
print("333333333")

a = all();
a.dys.se();

为什么最后一句a.dy.ses();显示错误。。。
展开
 我来答
藤原子大雄
2017-12-08 · TA获得超过7197个赞
知道大有可为答主
回答量:6977
采纳率:82%
帮助的人:1748万
展开全部
以双下划线__开头的变量是内部变量,只能在内部引用。举个栗子:
12345678910111213>>> class a(object):... def <a href="https://www.baidu.com/s?wd=__init&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1dBuW6kPvc4myczmWRzm1cL0AP8IA3qPjfsn1bkrjKxmLKz0ZNzUjdCIZwsrBtEXh9GuA7EQhF9pywdQhPEUiqkIyN1IA-EUBtkP1RvnjmLnWbkn1b3nWDLP103" target="_blank" class="baidu-highlight">__init</a>__(self):... self.__n=3... def p(self):... print self.__n...>>> b=a()>>> b.__nTraceback (most recent call last): File "<stdin>", line 1, in <module>AttributeError: 'a' object has no attribute '__n'>>> b.p()3
而你的全局函数print_score,就是这部分:
1234def print_score(self): print '%s : %s' % (self.__name,self.__score) #print 'age : %s ' % self.ageaa.print_score = MethodType(print_score,aa,Student)
这样做替代了Student类中的同名函数。不过看起来它依然不能操作内部变量。去掉下划线就能运行了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式