__具有唯一性,不同类下面得相同__函数名字,是不同的,这个是有自己的作用域的,当你继承父类的时候,是不可以调用父类里面的这个方法的,
继承:当子类没有这个方法或者属性的时候,就去父类里面找,__函数名字
继承的用法:
例子1:
class A():
def __edit(self):
print('A的edit方法')
return 'A的edit'
class B(A):
print('B')
def __edit(self):
print('B的edit方法')
return 'B的edut'
##第一种调用的方法
obj=B().__edit()
print(obj)
##执行报错,调用不了父类的__的方法(内置的方法)报错
讲解:
这个__edit在这个类下面是有自己的作用域的,外部是调用不了的
例子2:在自己的作用域下面尽进行调用这个类下面内置的方法(特殊)
class A():
def __edit(self):
print('A的edit方法')
return 'A的edit'
class B(A):
print('B')
def __edit(self):
print('B的edit方法')
return 'B的edut'
def fun(self):
a=self.__edit()
# print(a)
return a
##通过调用B下面的fun方法来调用__edit
obj=B().fun()
print(obj)
##通过init来调用这个内置的方法
class B(A):
print('B')
def __init__(self):
self.__edit()
##第二种
# a=self.fun()
# print(a)
def __edit(self):
print('B的edit方法')
return 'B的edut'
def fun(self):
a=self.__edit()
# print(a)
return a
B()
例子3:
继承调用父类的方法:(不是内置的方法)
class A():
def __init__(self):
self.__edit()
def __edit(self):
print('A的edit方法')
return 'A的edit'
def fun2(self):
print('A的fun2')
class B(A):
print('B')
def __init__(self):
self.fun2()
# def __edit(self):
# print('B的edit方法')
# return 'B的edut'
def fun(self):
a=self.__edit()
# print(a)
return a
B()
##继承调用父类的:(__edit作用域在父类那里,子类不能调用)
报错
class A():
def __init__(self):
self.__edit()
def __edit(self):
print('A的edit方法')
return 'A的edit'
def fun2(self):
print('A的fun2')
class B(A):
print('B')
def __init__(self):
self.__edit()
# def __edit(self):
# print('B的edit方法')
# return 'B的edut'
def fun(self):
a=self.__edit()
# print(a)
return a
B()
取里面的内置方法:
class FOO1():
def __init__(self,name,age,addr):
self.name=name
self.age=age
self.__addr=addr
def fun1(self):
print(self.__addr)
obj=FOO1('axle',14,'上海')
# obj.fun1()##通过函数调用的方法取里面的内置方法
print(obj._FOO1__addr)##取到里面的__内置方法