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();显示错误。。。 展开
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();显示错误。。。 展开
展开全部
以双下划线__开头的变量是内部变量,只能在内部引用。举个栗子:
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类中的同名函数。不过看起来它依然不能操作内部变量。去掉下划线就能运行了。
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类中的同名函数。不过看起来它依然不能操作内部变量。去掉下划线就能运行了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询